Android 广播接收器仅为一个动作触发

Android 广播接收器仅为一个动作触发,android,broadcastreceiver,Android,Broadcastreceiver,因此,我处于以下情况:我想安排一个警报在x间隔后重复。当用户已登录应用程序但未注销时,应安排此警报 预期的行为是:在设备启动时安排报警(如果用户尚未注销)。或者,在用户登录时安排报警。这样可以确保即使用户重新启动设备,警报仍会触发 我开始使用自定义接收器实现此功能,我已在清单中声明如下: <receiver android:name=".notifications.AlarmBootReceiver" android:enabled="false"> <

因此,我处于以下情况:我想安排一个警报在x间隔后重复。当用户已登录应用程序但未注销时,应安排此警报

预期的行为是:在设备启动时安排报警(如果用户尚未注销)。或者,在用户登录时安排报警。这样可以确保即使用户重新启动设备,警报仍会触发

我开始使用自定义接收器实现此功能,我已在清单中声明如下:

<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);