【发布时间】:2015-07-29 21:45:01
【问题描述】:
我的应用程序托管用户安装的小部件,与启动器应用程序相同。
绑定小部件后,一切正常。小部件是自动创建和更新的,我可以单击以导航内部视图。
一切正常,直到我从 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),但它不会在我的应用程序更新时被调用。
我的下一步是在应用程序更新后重新创建所有小部件,但我真的不想这样做。
不胜感激!
【问题讨论】:
-
什么:您测试的设备?操作系统版本?启动器(即三星触摸向导等)?
-
很多设备...我的应用程序已发布...许多用户报告了此问题,我设法在 3 种不同的设备(Android 4.1 及更高版本)上重现它。
-
@downvoter 请评论原因,以便我改进我的问题。
标签: android android-widget android-appwidget