我对 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);
这样做的缺点是必须自己从上下文和应用小部件 id 中找到 AppWidgetManager,而不是 onUpdate 为您提供的漂亮界面。所以我怀疑这是正确的方法。祝你好运。
myUpdate(Context) 像这样开始:
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int[] appWidgetIds =
appWidgetManager.getAppWidgetIds(new ComponentName(context, this.getClass()));