1

コンテンツ プロバイダーからのデータを表示するウィジェットがあります。コンテンツ プロバイダのデータがいつ変更されるかを知りたいです。私が知る限り、それを行う方法は

context.getContentResolver().registerContentObserver

しかし、ウィジェットの最初のインスタンスを追加すると、AppWidgetProvider.onEnabled メソッドは呼び出されません。だから作れないregisterContentObserver。onDisabled と同じです。

この問題を解決するには?

ありがとう

4

2 に答える 2

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>

そうしないと、onEnabled() をトリガーするブロードキャストを受信できません。

注: onDeleted(...) の場合は APPWIDGET_DELETED、onDisabled(...) の場合は APPWIDGET_DISABLED

于 2011-10-12T23:06:01.943 に答える
3

AppWidgetProviderまたはその他のマニフェスト登録済みBroadcastReceiver)はを呼び出すことができませんregisterContentObserver()。コンテンツを変更しているエンティティは、アプリウィジェットを更新する必要があります。または、何らかのポーリングメカニズムを実装する必要があります(たとえば、に基づいて新しいコンテンツをチェックしますandroid:updatePeriodMillis)。

于 2011-03-30T11:08:42.613 に答える