【问题标题】:How do I update an Android AppWidget after upgrading/reinstalling the application?升级/重新安装应用程序后如何更新 Android AppWidget?
【发布时间】:2012-08-06 21:24:22
【问题描述】:

我创建了一个应用 (https://play.google.com/store/apps/details?id=com.widget.analytics),它使用 AppWidget 在 Android 主屏幕上显示 Google Analytics 统计信息。

不幸的是,在将应用升级到新版本后,用户需要删除他们之前创建的所有小部件,并且必须重新安装它们。这很烦人。然而,我相信有办法解决。

升级应用程序后,小部件不会被销毁,它们只是处于从布局继承的“默认”状态。

我可以使用四个小部件回调中的任何一个来更新小部件吗?是否有一个升级后回调,我可以对其采取行动并更新小部件?

【问题讨论】:

    标签: android android-appwidget appwidgetprovider


    【解决方案1】:

    我没有意识到重新安装应用程序后会调用onUpdate。所以代码只是进入更新方法,每次升级后都会被调用:

    public class WidgetProvider extends AppWidgetProvider {
    
      @Override
      public void onUpdate (Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
        // Here we update the widget :)
      }
    
    }
    

    【讨论】:

    • 我很困惑,如果在更新应用程序后,自动调用小部件更改,那么在您的问题中为什么您提到“用户需要删除他们之前创建的所有小部件并必须重新安装它们”?
    【解决方案2】:

    您可以注册一个BroadcastReceiver 来接收ACTION_PACKAGE_REPLACED 广播,然后在接收器中通知您的小部件重新加载(可能通过AppWidgetManager.notifyAppWidgetViewDataChanged(..))。您可能还需要接收ACTION_MY_PACKAGE_REPLACED 广播。

    【讨论】:

    • 在你的包被卸载之后和你的包实际准备好运行之前广播。不工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 2020-02-19
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多