Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应用程序上的广播接收器已关闭(或在后台)_Java_Android_Broadcastreceiver - Fatal编程技术网

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
上的标志。否则,代码似乎没有什么明显的错误。