簡體   English   中英

Android——我怎么知道應用是否自動啟動

[英]Android——How can i know whether the app is autostart or not

我想知道用戶是否允許該應用程序的自動啟動權限。 我已經嘗試過了:

ComponentName mComponentName = new ComponentName(getPackageName(),".AutoStartReceiver");
int a = getPackageManager().getComponentEnabledSetting(mComponentName);

安全應用程序可以授予和拒絕自動啟動權限,但是我不知道如何在應用程序中獲取狀態。 如圖片

您可能正在使用此權限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

之后,您可以實現BroadcastReceiver:

public class BootUpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT);
    am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi);
}}

只需將類添加到清單文件中:

<receiver android:enabled="true" android:name=".BootUpReceiver"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

要直接檢查是否具有自動啟動權限,請使用以下命令:

int p = ContextCompat.checkSelfPermission(Activity.this, Manifest.permission.RECEIVE_BOOT_COMPLETED);
if (p == PackageManager.PERMISSION_GRANTED) {
    //Yay, you have the receive boot completed (= Autostart) permission!
}

要獲取針對特定意圖注冊的接收者列表,可以使用Use PackageManagerqueryBroadcastReceivers()

要獲取BOOT_COMPLETE的列表, BOOT_COMPLETE使用BOOT_COMPLETE操作構造一個意圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM