我想知道用户是否允许该应用的自动启动权限。我已经尝试过了:
ComponentName mComponentName = new ComponentName(getPackageName(),".AutoStartReceiver");
int a = getPackageManager().getComponentEnabledSetting(mComponentName);
安全应用可以授予和拒绝自动启动权限,但我不知道如何在我的应用程序中获取状态。 such as the picture
答案 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)
要获取已注册特定意图的接收者列表,您可以使用
使用PackageManager
和queryBroadcastReceivers()
。
要获取BOOT_COMPLETE
的列表,请使用BOOT_COMPLETE
操作