我的应用程序托管用户安装的小部件,就像启动器应用程序一样。
一旦绑定小部件,一切都正常运作。小部件会自动创建和更新,我可以单击以导航内部视图。
一切都保持正常工作,直到我从Play商店更新我的应用程序(或手动使用签名的APK进行更新)。
更新后,小部件仍然显示,但它们不再更新。当我点击其中某些小部件时,有些小部件会发挥功能,但视图会被卡住,永远不会得到更新,直到我重新创建小部件(获取新ID并绑定)。
我尝试使用以下命令强制更新:
Intent intent = new Intent();
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.setComponent(appWidgetInfo.provider);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[]
{appWidgetId});
context.sendBroadcast(intent);
但这并没有帮助...
我想尝试在点击时进行强制更新,但我找不到任何方法来获取小部件的RemoteViews(因为这不是我的小部件,我只是托管它)。
RemoteViews views =
new RemoteViews(context.getPackageName(),R.layout.mywidget_layout);
Intent updateIntent = new Intent();
updateIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
updateIntent.putExtra(myWidgetProvider.WIDGET_IDS_KEY, ids);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
context, 0, updateIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.view_container, pendingIntent);
我还实现了一个AppWidgetProvider
来监听小部件ID的更改(APPWIDGET_HOST_RESTORED
),但它在我的应用程序更新时没有被调用。
我的下一步将是在应用程序更新后重新创建所有小部件,但我真的不想这么做。
非常感谢任何帮助!