AppWidgetProvider: не вызывается метод onEnabled - PullRequest
1 голос
/ 30 марта 2011

У меня есть виджет, который отображает данные от контент-провайдера.Я хочу знать, когда изменяются данные в контент-провайдере.Насколько я знаю, способ сделать это -

context.getContentResolver().registerContentObserver

Но метод AppWidgetProvider.onEnabled не вызывается, когда я добавляю первый экземпляр виджета.Вот почему я не могу сделать registerContentObserver.То же самое с onDisabled.

Как решить эту проблему?

Спасибо

Ответы [ 2 ]

6 голосов
/ 13 октября 2011

Вам необходимо добавить 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>

Без этого вы не получите широковещательную рассылку, вызывающую onEnabled ().

note:APPWIDGET_DELETED для onDeleted (...), APPWIDGET_DISABLED для onDisabled (...)

3 голосов
/ 30 марта 2011

AppWidgetProvider (или любой другой зарегистрированный манифест BroadcastReceiver) не может позвонить registerContentObserver(). Сущность, которая изменяет ваш контент, должна будет обновить виджет вашего приложения, или вам нужно будет внедрить какой-то механизм опроса (например, проверить наличие нового контента на основе android:updatePeriodMillis).

...