Android 广播接收器仅为一个动作触发
因此,我处于以下情况:我想安排一个警报在x间隔后重复。当用户已登录应用程序但未注销时,应安排此警报 预期的行为是:在设备启动时安排报警(如果用户尚未注销)。或者,在用户登录时安排报警。这样可以确保即使用户重新启动设备,警报仍会触发 我开始使用自定义接收器实现此功能,我已在清单中声明如下:Android 广播接收器仅为一个动作触发,android,broadcastreceiver,Android,Broadcastreceiver,因此,我处于以下情况:我想安排一个警报在x间隔后重复。当用户已登录应用程序但未注销时,应安排此警报 预期的行为是:在设备启动时安排报警(如果用户尚未注销)。或者,在用户登录时安排报警。这样可以确保即使用户重新启动设备,警报仍会触发 我开始使用自定义接收器实现此功能,我已在清单中声明如下: <receiver android:name=".notifications.AlarmBootReceiver" android:enabled="false"> <
<receiver
android:name=".notifications.AlarmBootReceiver"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
<intent-filter>
<action android:name="com.example.START_ALARMS"/>
</intent-filter>
</receiver>
绝对什么也没发生
接收器工作正常,这是肯定的,否则警报不会在开机时触发。
我还确保通过以下方式启用接收器:
ComponentName receiver = new ComponentName(this, AlarmBootReceiver.class);
PackageManager pm = this.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
我真的不知道我遗漏了什么,因此非常感谢您的帮助。您的应用程序包名是什么?您可以在清单中找到它,它会说“package=blah.blah.blah”之类的话。我已经检查了包和到接收者的路径。他们都很好。
ComponentName receiver = new ComponentName(this, AlarmBootReceiver.class);
PackageManager pm = this.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);