首页 > 解决方案 > android - 引导接收器未触发

问题描述

所以我有一个基于使用 AlarmManager 的重复任务的应用程序,我希望在设备重新启动时初始化警报

因此,我做了一个引导接收器,代码提前:

    [BroadcastReceiver(Enabled = true)]
    [IntentFilter(new[] { Intent.ActionBootCompleted })]
    public class BootReceiver : BroadcastReceiver
    {
        public override void OnReceive(Context context, Intent intent)
        {
            Log.Write("BootCompleted Alarm was received.");
            Alarms.Init(context);
        }
    }

我还获得了使用权限:

[assembly: UsesPermission(Manifest.Permission.ReceiveBootCompleted)]

在我的设备设置中检查应用程序的权限时,它具有权限。

那么,为什么不火呢?

标签: androidxamarin.androidpermissionsalarmmanagerandroid-alarms

解决方案


新 api 中的一些限制在您注册以接收基于系统事件的广播时会导致问题(例如,AlarmManager)

在文档Statically registering a Broadcast Receiver with an Intent Filter 中

在 Android 8.0(API 26 及更高版本)中,Google对应用程序在用户不直接与其交互时可以执行的操作进行了限制。这些限制会影响后台服务和隐式广播接收器,例如 Android.Content.Intent.ActionBootCompleted。由于这些限制,您可能难以在较新版本的 Android 上注册 Boot Completed 广播接收器。如果是这种情况,请注意这些限制不适用于前台服务,前台服务可以从您的广播接收器中调用。

隐式广播异常


推荐阅读