Android - 我怎么知道应用程序是否是自动启动

时间:2016-09-02 07:21:33

标签: android permissions autostart

我想知道用户是否允许该应用的自动启动权限。我已经尝试过了:

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

安全应用可以授予和拒绝自动启动权限,但我不知道如何在我的应用程序中获取状态。 such as the picture

2 个答案:

答案 0 :(得分:0)

您可能正在使用此权限:

<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!
}

答案 1 :(得分:0)

要获取已注册特定意图的接收者列表,您可以使用 使用PackageManagerqueryBroadcastReceivers()

要获取BOOT_COMPLETE的列表,请使用BOOT_COMPLETE操作

构建一个意图