广播接收器未在应用程序强制关闭时执行

时间:2013-08-01 12:32:34

标签: android android-intent broadcastreceiver alarmmanager

我有一个为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"接收器。但即便如此也无济于事。

1 个答案:

答案 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

希望这对你有帮助