Обработать метод update () виджета приложения из BroadcastReceiver - PullRequest
1 голос
/ 04 января 2012

Я сделал пример из Статья виджета приложения , где я использовал Сервис для обновления виджета приложения.

Теперь я хочу программно обновить виджет приложения с заданным интервалом (интервалом времени выполнения).

Как я могу это сделать?

1 Ответ

3 голосов
/ 04 января 2012

Вот пример, как настроить создание события обновления для AppWidget. Вы можете настроить его для своих целей:

Intent intent = new Intent();
intent.setAction(ExampleAppWidgetProvider.MY_INTENT_ACTION);
Uri data = Uri.withAppendedPath (Uri.parse("wordwidget://wordwidget/widgetId/#"),
                String.valueOf(mAppWidgetId));
intent.setData(data);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);

PendingIntent pendingIntent = PendingIntent.getBroadcast(
ExampleAppWidgetConfigure.this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 10000, 10*1000, pendingIntent);

Вы также должны создать дополнительный фильтр намерений для своего БР, который получит намерение с именем действия: ExampleAppWidgetProvider.MY_INTENT_ACTION

UPDATE К вашему Broadcast Receiver вы должны добавить новый намеренный фильтр, например:

<intent-filter>
    <action android:name="org.android.testwidget.MY_APPWIDGET_UPDATE" />
    <data android:scheme="wordwidget" />
</intent-filter>

Затем вы создаете Намерение, которое будет получено определенным фильтром намерений. В моем случае public static final String MY_INTENT_ACTION = "org.android.testwidget.MY_APPWIDGET_UPDATE"; Часть данных Intent необходима для создания отдельного намерения для каждого экземпляра AppWidget (потому что я хочу обновить каждый экземпляр в разное время). После этого вы создаете отложенное намерение для BR и создаете alarmManager с этим PI. В методе setRepeating вы определяете время начала и интервал для вашего экземпляра AppWidget.

...