6

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

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

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

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

4

2 回答 2

4

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

public class WidgetProvider extends AppWidgetProvider {

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

}
于 2012-11-07T11:25:05.757 回答
1

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

于 2012-08-06T22:44:52.813 回答