我的小部件应用程序仅在我安装小部件时才有效,将其添加到屏幕然后再次安装,如果我添加另一个小部件,我必须再次安装才能让第二个小部件开始工作(重启设备也有帮助,重启后屏幕上的所有小部件都可以工作,我有配置文件,但它没有到达我的 appWidgetProvider(操作在 onUpdate 方法上设置),我如何强制我的 APP 从配置文件更新小部件?
我的整个项目: https ://github.com/vlad1001/Widget
谢谢!
我的小部件应用程序仅在我安装小部件时才有效,将其添加到屏幕然后再次安装,如果我添加另一个小部件,我必须再次安装才能让第二个小部件开始工作(重启设备也有帮助,重启后屏幕上的所有小部件都可以工作,我有配置文件,但它没有到达我的 appWidgetProvider(操作在 onUpdate 方法上设置),我如何强制我的 APP 从配置文件更新小部件?
我的整个项目: https ://github.com/vlad1001/Widget
谢谢!
在您的代码上看到的唯一区别是您在更新小部件之前完成了活动。从文档来看,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);
我的第一枪。查看AndroidManifest.xml
您项目中的文件。
有一条线可能会导致您描述的问题。
android:allowBackup="true"
是否允许应用程序参与备份和恢复基础架构。如果此属性设置为 false,则不会执行应用程序的备份或恢复,即使是全系统备份也会导致所有应用程序数据通过 adb 保存。此属性的默认值为 true。
简而言之:卸载应用程序并不意味着您已经卸载了应用程序的内容和设置。
尝试将其设置为false
.
相关问题:https ://stackoverflow.com/a/35296675/619673
替代方案:首次安装后,清除应用程序缓存,然后运行(或在终端中调用adb shell pm clear <your.package.name
)。