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

时间:2012-09-28 09:13:11

标签: android android-intent widget broadcastreceiver

我一直在改变所有引用此自定义意图的问题。 Aka我更改了名称,它不再注册。然而,更令人担忧的是,似乎我无法获得任何广播意图! (APPWIDGET_UPDATE除外)。

<receiver android:name=".ExampleAppWidgetProvider" 
            android:label="@string/widget1name">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
         <!-- <action android:name="com.eightbitcloud.example.widget.8BITCLOCK_WIDGET_UPDATE" />  -->
        <action android:name="android.intent.action.MEDIA_REMOVED" />
        <action android:name="android.intent.action.MEDIA_UNMOUNTED" />
        <action android:name="android.intent.action.MEDIA_MOUNTED" />
        <action android:name="android.intent.action.SCREEN_ON" />

     </intent-filter>
    <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget1_info" />
</receiver>

使用代码:

@Override
public void onReceive(Context context, Intent intent) {
      Log.d(LOG_TAG, "Received intent " + intent.getAction());

唯一触发的是Appwidget_update。

为什么?

3 个答案:

答案 0 :(得分:2)

如果您在代码中注册接收器,则只会触发某些广播事件。尝试将此添加到您的onCreate:

registerReceiver(new BroadcastReceiver() {

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

答案 1 :(得分:1)

这与我的onEnabled()事件有关,创建一个一次又一次发送给定意图的alarmManager。

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

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

因此,旧的意图仍在触发,并被过滤,而不是我的新命名意图。

重新启动手机,和/或移除小部件并替换它们应该可以解决问题(因此再次触发OnEnabled()

答案 2 :(得分:0)

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

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