从Android 11开始,应用程序需要在清单文件中显式声明对于该广播的接收器,并且必须具有与其它系统应用程序相同的权限。请按照以下步骤进行:
...
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction() != null &&
intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
// 处理逻辑
}
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int permissionCheck = ContextCompat.checkSelfPermission(this,
Manifest.permission.RECEIVE_BOOT_COMPLETED);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.RECEIVE_BOOT_COMPLETED},
REQUEST_CODE_BOOT_PERMISSION);
}
}