我有一个AppWidgetProvider,当小部件第一次被添加到主屏幕时,我需要进行一些初始化。我知道这样做的地方是在onEnabled(上下文上下文)方法中。我的问题是这个方法从来没有被调用过(就我在logcat中所能看到的)。
下面是我的代码:
public class MyMonitorWidget extends AppWidgetProvider{
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
Log.v("LOG", "Widget onEnabled");
Intent intentToFire = new Intent(UpdateAlarmReceiver.ACTION_UPDATE_ALARM);
context.sendBroadcast(intentToFire);
}
...
}和我的appwidget提供者xml:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/widget_layout"
android:minWidth="146dp"
android:minHeight="74dp"
android:label="Monitor Widget"
/>在货单上:
<receiver android:name="MyMonitorWidget" android:label="Monitor Widget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<intent-filter>
<action android:name="com.android.myMonitor.ACTION_NOTIFY_WIDGET"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/monitor_widget_info"/>
</receiver>你认为问题出在哪里?
发布于 2011-07-25 19:28:09
您需要将android.appwidget.action.APPWIDGET_ENABLED添加为另一个操作:
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_ENABLED" />
</intent-filter>否则,您将不会收到触发onEnabled()的广播。
发布于 2012-08-29 22:35:08
不要忘记android:exported属性!当android:exported为false时,我没有收到onDelete()
<receiver
...
android:exported="true"
... >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_DELETED" />
<action android:name="android.appwidget.action.APPWIDGET_ENABLED" />
<action android:name="android.appwidget.action.APPWIDGET_DISABLED" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource=... />
</receiver>https://stackoverflow.com/questions/6814573
复制相似问题