Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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
Android 安卓:没有收到任何广播意图_Android_Android Intent_Widget_Broadcastreceiver - Fatal编程技术网

Android 安卓:没有收到任何广播意图

Android 安卓:没有收到任何广播意图,android,android-intent,widget,broadcastreceiver,Android,Android Intent,Widget,Broadcastreceiver,我在更改所有引用此自定义意图时遇到问题。我改变了名字,它就不再注册了。然而,更令人担忧的是,我似乎无法得到任何广播的意图!(除了APPWIDGET\u更新) 唯一触发的是Appwidget\u更新 为什么?您忘记了意图过滤器中的默认类别: <category android:name="android.intent.category.DEFAULT" /> 只有在代码中注册接收器时,才会触发某些广播事件。尝试将此添加到onCreate中: registerReceiver(new

我在更改所有引用此自定义意图时遇到问题。我改变了名字,它就不再注册了。然而,更令人担忧的是,我似乎无法得到任何广播的意图!(除了APPWIDGET\u更新)

唯一触发的是Appwidget\u更新


为什么?

您忘记了意图过滤器中的默认类别:

<category android:name="android.intent.category.DEFAULT" />

只有在代码中注册接收器时,才会触发某些广播事件。尝试将此添加到onCreate中:

registerReceiver(new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
           Log.e("test","screen changed!!!");
        }
}, new IntentFilter(Intent.ACTION_SCREEN_ON));

这与my
OneEnabled()
事件有关,它创建了一个alarmManager,一次又一次地发送给定的意图

通过改变我收到的,我显然过滤掉了旧的

然而,我没有看到的是,当我运行新代码时,Eclipse正在替换我的小部件,但它再也不会重新启动OneEnabled

所以旧的意图仍然在发射,并被过滤,而不是我新命名的意图


重新启动手机,和/或删除小部件并替换它们应该可以(因此,
OnEnabled()
再次启动)

谢谢,但我已经尝试过了,文档原则上说,
,因此,没有类别的意图对象应该总是通过这个测试,不管过滤器中有什么。
它只会增加更多限制。正如目前一样,任何匹配操作都应该通过测试。我在他的一个回答中也从commonware听到了这一点。但是,您不能从接收者处注册接收者。我试图为一个小部件做这件事<代码>意图接收器组件不允许注册以接收意图+1无论如何
<category android:name="android.intent.category.DEFAULT" />
registerReceiver(new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
           Log.e("test","screen changed!!!");
        }
}, new IntentFilter(Intent.ACTION_SCREEN_ON));