首页 > 解决方案 > 小部件仅在 2 次安装或重新启动后才有效

问题描述

我的小部件应用程序仅在我安装小部件时才有效,将其添加到屏幕然后再次安装,如果我添加另一个小部件,我必须再次安装才能让第二个小部件开始工作(重启设备也有帮助,重启后屏幕上的所有小部件都可以工作,我有配置文件,但它没有到达我的 appWidgetProvider(操作在 onUpdate 方法上设置),我如何强制我的 APP 从配置文件更新小部件?

我的整个项目: https ://github.com/vlad1001/Widget

谢谢!

标签: androidwidgetonupdate

解决方案


在您的代码上看到的唯一区别是您在更新小部件之前完成了活动。从文档来看,onUpdate 方法不会第一次被调用。我认为您必须添加以下内容:

super.onCreate(icicle);
setResult(RESULT_CANCELED);

删除这一行:

setResult(RESULT_CANCELED, resultValue);

之后,在 setResult 和 finish() 之前更改对 update 的调用:

        //make the update before finish()
        appWidgetManager.updateAppWidget(appWidgetId, views);

        Intent resultValue = new Intent();
        resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
        setResult(RESULT_OK, resultValue);
        finish();

我没有重现您的问题,如果这对您有用,请告诉我。

共享源代码后,基本问题是,在第一次创建时,您将点击意图添加到 Text,而在更新时,您将待处理的意图添加到 imageView... 更改此行可以解决您的问题。在 PR 上测试...

views.setOnClickPendingIntent(R.id.example_widget_imageview, clickPendingIntent);

推荐阅读