AppWidgetProvider:未调用onEnabled方法

Div*_*ion 1 android android-appwidget

我有从内容提供商显示数据的小部件.我想知道内容提供商中的数据何时发生变化.据我所知,这样做的方法是

context.getContentResolver().registerContentObserver

但是当我添加小部件的第一个实例时,不会调用AppWidgetProvider.onEnabled方法.这就是我无法做到的原因registerContentObserver.与onDisabled相同.

如何解决这个问题呢?

谢谢

Gal*_*e33 6

您需要将android.appwidget.action.APPWIDGET_ENABLED添加为另一个操作:

<intent-filter>
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    <action android:name="android.appwidget.action.APPWIDGET_ENABLED" />
    <action android:name="android.appwidget.action.APPWIDGET_DELETED" />
    <action android:name="android.appwidget.action.APPWIDGET_DISABLED" />  
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

没有它,您将不会收到触发onEnabled()的广播.

注意:onDleted(...)的APPWIDGET_DELETED,onDisabled的APPWIDGET_DISABLED(...)

  • 从官方文档:"...它指定AppWidgetProvider接受ACTION_APPWIDGET_UPDATE广播.这是您必须显式声明的唯一广播.AppWidgetManager会根据需要自动将所有其他App Widget广播发送到AppWidgetProvider." (2认同)