Я все еще довольно новичок в Android, но я выполнил это за три шага:
Сначала я поместил содержимое моего AppWidgetProvider.onUpdate в метод (myUpdate(Context)
).
Во-вторых, я переопределил AppWidgetProvider.onReceive (), чтобы он выглядел примерно так:
public void onReceive(final Context context, final Intent intent)
{
super.onReceive(context, intent);
if (MY_PUBLIC_STATIC_STRING.equals(intent.getAction()))
{
myUpdate(context);
}
}
В-третьих, из своей другой деятельности я просто отправляю обычную трансляцию с действием, заданным для намерения.
Intent updateWidgetIntent = new Intent(context, MyWidget.class);
updateWidgetIntent.setAction(MyWidget.MY_PUBLIC_STATIC_STRING);
context.sendBroadcast(updateWidgetIntent);
Недостатком является то, что вам нужно самостоятельно найти AppWidgetManager из контекста и идентификаторов виджетов приложения, а не из-за приятного интерфейса, который дает вам OnUpdate.Поэтому я скептически отношусь к тому, что это правильный подход.Желаем удачи.
myUpdate (Context) начинается так:
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int[] appWidgetIds =
appWidgetManager.getAppWidgetIds(new ComponentName(context, this.getClass()));