android - 小部件仅在 2 次安装或重新启动后才有效
问题描述
我的小部件应用程序仅在我安装小部件时才有效,将其添加到屏幕然后再次安装,如果我添加另一个小部件,我必须再次安装才能让第二个小部件开始工作(重启设备也有帮助,重启后屏幕上的所有小部件都可以工作,我有配置文件,但它没有到达我的 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);
推荐阅读
- xamarin.forms - 我想为 xamarin Android 应用程序添加捏和缩放图像编辑功能
- c# - 当 Outlook 在没有“以管理员身份运行”的情况下运行时,无法在客户部署上加载 Outlook 加载项用户控件
- excel - 使用索引选择重复匹配的范围
- azure-active-directory - 我们可以在未加入 Azure AD 的情况下获得 PRT(主刷新令牌)吗?
- python - 在 ECS 任务上运行的 Django 不起作用。请求 webapp 时出现“连接被拒绝”或“无数据响应”
- c++ - DuplicateHandle() 是否进行任何进程间通信 (IPC),如果没有,为什么以参数为目标?
- firebase - Ionic Firebase Google 登录不起作用,控制台上没有错误
- css - 如何将 em/rem 转换为 px?
- angular - 如何在生产构建中更改 Angular 应用脚本的路径?
- java - 为什么我收到数据库错误 java.lang.reflect.InvocationTargetException [numThreadsAwaitingCheckoutDefaultUser] ] has been closed()