Java 应用程序上的广播接收器已关闭(或在后台)
我创建了一个简单的报警应用程序,我在Java 应用程序上的广播接收器已关闭(或在后台),java,android,broadcastreceiver,Java,Android,Broadcastreceiver,我创建了一个简单的报警应用程序,我在AndroidManifest.xml中注册了两个广播接收器(一个用于接收报警,另一个用于在设备启动时重新安排它们)。在安排了一些警报之后,我重新启动了我的设备和我的“OnBoot”接收器很好地重新安排了警报,但是第一个接收器没有接收到它们。如果我启动我的应用程序,安排一些警报,但不关闭它,接收器将正常工作,但如果我关闭(而不是强制停止)应用程序或按home按钮将其发送到后台,接收器将永远不会收到警报!我在几个设备(HTC、魅族、三星)上测试了它,发现了同样的
AndroidManifest.xml
中注册了两个广播接收器(一个用于接收报警,另一个用于在设备启动时重新安排它们)。在安排了一些警报之后,我重新启动了我的设备和我的“OnBoot”接收器
很好地重新安排了警报,但是第一个接收器没有接收到它们。如果我启动我的应用程序,安排一些警报,但不关闭它,接收器将正常工作,但如果我关闭(而不是强制停止)应用程序或按home按钮将其发送到后台,接收器将永远不会收到警报!我在几个设备(HTC、魅族、三星)上测试了它,发现了同样的问题。我发现只有一种方法可以使接收器正常工作,那就是关闭应用程序,因为在我再次启动它之后,即使应用程序关闭,接收器也能正常工作,但在我再次重启设备之后,我会遇到同样的问题。拜托,有人能帮我吗?我需要做什么来解决这个问题
我尝试了几乎所有的方法(更改挂起的内容标志
和请求
代码,在远程进程
中运行接收器
,设置意图过滤器
,从唤醒广播接收器
扩展
,以及许多其他方法),但没有任何帮助
AndroidManifest.xml中的接收者
<receiver
android:name="com.gd.aiwnext.deal.Receivers.NotificationsReceiver"
android:enabled="true"
android:exported="true"
android:process=":nr">
<intent-filter>
<action android:name="com.gd.action.intent.bri"></action>
</intent-filter>
</receiver>
<receiver
android:name="com.gd.aiwnext.deal.Receivers.NotificationBootReceiver"
android:process=":nbr">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
我使用CreateNotification()方法发送通知,并使用数据库更新报警的时间和日期
创建报警
Intent intent = new Intent("com.gd.action.intent.bri");
在那之后我放了一些额外的
PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), IdCount, intent, PendingIntent.FLAG_ONE_SHOT);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, FutureTimeMillis, pendingIntent);
您应该应用默认类别
<category android:name="android.intent.category.DEFAULT" />
如果未指定类别,Android会将此类别分配给每个意图。您应该应用默认类别
<category android:name="android.intent.category.DEFAULT" />
如果未指定类别,Android会将此类别分配给每个意图。尝试从receiver Tag中删除Android:process=“:nr”谢谢,但这无助于meI用该代码更新帖子。尝试一下-将接收器的组件名称添加到报警意图中(我记得读过一些相关内容,但不记得细节)。还可以尝试更改pendingent
上的标志。否则,该代码似乎没有什么明显的错误。尝试从receiver Tag中删除android:process=“:nr”谢谢,但这无助于meI用该代码更新帖子。尝试-将接收器的组件名称添加到报警意图中(我记得读过一些关于此的内容,但不记得细节)。还可以尝试更改pendingent
上的标志。否则,代码似乎没有什么明显的错误。