我一直在改变所有引用此自定义意图的问题。 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。
为什么?
答案 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" />