我有一个为jelly bean开发的应用程序,我将使用Alarm manager安排将来执行的事件。只要应用程序在前台或后台运行,预定事件就会按预期执行。但是一旦我强制关闭任务管理器下的应用程序,我就无法再从警报管理器接收广播。
正如各种帖子和博客所建议我尝试使用Intent.Flag_Include_Stopped_Packages。但它毫无用处。在intent中包含此标志仅适用于sendBroadcast(intent)。但是如果警报管理器使用了未决意图,则它不起作用。
我安排闹钟的代码
Intent intent = new Intent("com.dummy.intent");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(),dummyId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, scheduledAlarm.getTimeInMillis(), pi);
我的主要节目
<receiver android:name="com.example.androidScheduling.alarmReceiver"
android:enabled="true"
android:exported="true"
android:process=":remote">
<intent-filter>
<action android:name="com.dummy.intent"></action>
</intent-filter>
</receiver>
有人可以帮帮我吗?
我甚至尝试在清单中包含android:process = ":remote"
接收器。但即便如此也无济于事。
答案 0 :(得分:1)
我认为你没有在清单和编程中正确拼写intent的动作名称。
<强> In pro-grammatically
强>
Intent intent = new Intent("com.dummy.intent");
<强> Manifest file
强> -
<intent-filter>
<action android:name="com.custom.intent"></action>
</intent-filter>
The action name to intent and declared in manifest must require same
。
希望这对你有帮助