Lio*_*luz 9 android android-widget android-appwidget
我的应用程序托管用户安装的小部件,与启动器应用程序相同.
一旦我绑定小部件,一切正常.窗口小部件创建,自动更新,我可以单击以导航内部视图.
一切都工作正常,直到我从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);
Run Code Online (Sandbox Code Playgroud)
但这没有帮助......
我想尝试点击强制更新,但我找不到任何方法来获取小部件的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);
Run Code Online (Sandbox Code Playgroud)
还实现了一个AppWidgetProvider监听小部件的ID更改(APPWIDGET_HOST_RESTORED),但它不会在我的应用程序更新时调用.
我的下一步是在应用程序更新后重新创建所有小部件,但我真的不愿意这样做.
非常感谢任何帮助!
解决了.
我想做的最后一件事可能是我应该尝试的第一件事.我继续重新创建小部件,我发现我不必完全重新创建它们,只需bindAppWidgetIdIfAllowed()使用我已有的相同Widget ID 重新调用它.
该方法将return true在一切仍然正常的情况下进行,如果没有,则可能不再安装窗口小部件,或者您需要触发其配置屏幕.
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |