1

我在更改对此自定义意图的所有引用时遇到问题。又名我更改了名称,它不再注册。然而,更令人担忧的是,我似乎无法获得任何广播意图!(除外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。

为什么?

4

3 回答 3

2

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

registerReceiver(new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
           Log.e("test","screen changed!!!");
        }
}, new IntentFilter(Intent.ACTION_SCREEN_ON));
于 2012-09-28T09:42:19.597 回答
1

这与我的onEnabled()事件有关,创建了一个一次又一次发送给定意图的警报管理器。

通过更改我收到的内容,我显然过滤掉了旧的。

但是我没有看到的是,当我运行新代码时,Eclipse 正在替换我的小部件,但它再也不会重新触发 onEnabled。

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

重新启动手机,和/或删除小部件并更换它们应该可以解决问题(所以OnEnabled()再次被解雇)

于 2012-10-03T08:51:20.760 回答
0

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

<category android:name="android.intent.category.DEFAULT" />
于 2012-09-28T09:19:37.920 回答