gpt4 book ai didi

android - 如何从系统重启 android 中重启和更新小部件

转载 作者:太空狗 更新时间:2023-10-29 12:54:06 25 4
gpt4 key购买 nike

我有一个成功运行的 appwidget。现在当手机重新启动时,该小部件丢失了所有数据,只停留在主屏幕上。因为我无法在手机重启时从广播接收器更新小部件,所以我创建了一个通知这会导致小部件的配置 Activity 。用户重新设置配置并离开配置 Activity 后,没有任何效果;空闲的小部件只是留在那里?(用户必须删除小部件并再次创建小部件)。假设我没有正确接收小部件 ID 或者我在广播接收器中做错了并且假设将所有代码移动到小部件方法中的 onEnable?.. 如何正确刷新小部件。请记住,所有小部件更新都是通过服务完成的。

顺便说一句,我在广播接收器中有用于 boot_completed 操作的代码:

public void onReceive(final Context context, Intent intent) {

String info = context.getResources().getString(R.string.restart_setting);

int[] allids = AppWidgetManager.getInstance(context).getAppWidgetIds(new ComponentName(context, MyWidgetProvider.class));
for(int appWidgetId:allids){

NotificationManager mnotifyManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notify = new Notification(R.drawable.icon, "Weather Update", System.currentTimeMillis());
notify.defaults = Notification.DEFAULT_SOUND;
notify.defaults = Notification.DEFAULT_VIBRATE;

Intent Settings = new Intent(context, WidgetConfigure.class);
Settings.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

PendingIntent pending = PendingIntent.getActivity(context, 0, weatherSettings, PendingIntent.FLAG_ONE_SHOT);
notify.setLatestEventInfo(context, "Weather Update", info, pending);
notify.flags = Notification.FLAG_AUTO_CANCEL;
notify.defaults = Notification.DEFAULT_ALL;
mnotifyManager.notify(WEATHER_NOTIFICATION_ID , notify);
}
}

最佳答案

今天早上我遇到了同样的问题,并试图通过监听 boot_completion Intent 来解决它。它不适用于小部件。这是我的发现。

  • 要获得有关重启的通知,除了 boot_completed 和 android.permission.RECEIVE_BOOT_COMPLETED 的许可外,您还需要接收 android.intent.action.ACTION_EXTERNAL_APPLICATION_AVAILABLE >.

  • 但事实是,不需要额外的 Intent 。重启后,BroadcastReceiver 的 onEnableonUpadate 无论如何都会被调用。

因此,我实现的解决方案将每个小部件的配置存储在一个文件中,并将小部件 ID 作为文件名的一部分。在接收器的 onUpdate 中,我再次初始化小部件(使用点击监听器和所有这些)

结果是,重新启动后需要一点时间,但小部件(所有)看起来不错并且按预期工作。

关于android - 如何从系统重启 android 中重启和更新小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8769087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com