Ale*_*987 3 android widget alarmmanager android-intent android-appwidget
我有一个AppWidgetProvider,我需要在小部件首次添加到主屏幕时进行一些初始化.我知道这样做的地方是onEnabled(Context context)方法.我的问题是永远不会调用此方法(据我在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-provider 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>
您认为这个问题是什么?
您需要添加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().
小智 5
不要忘记android:exported财产!我没有收到onDelete()时android:exported是false
<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>
| 归档时间: | 
 | 
| 查看次数: | 4862 次 | 
| 最近记录: |