我正在开发一个应用程序,该应用程序应在安装后将其快捷方式添加到主屏幕,并在卸载应用程序后将其删除。该应用程序将预安装在最终用户设备上,但仍然应该有卸载选项)。这个任务看起来很简单,但实施起来却遇到了很多麻烦。
我做了什么:
- 使用添加快捷方式到主屏幕
com.android.launcher.action.INSTALL_SHORTCUT
在应用程序首次启动时或在 newt 设备上
重启。
- 使用手动删除快捷方式
com.android.launcher.action.UNINSTALL_SHORTCUT。
我不能(并且几乎放弃):
无法使用 Intent.ACTION_PACKAGE_REMOVED,因为正在卸载的应用程序不会收到此意图。
我进行了一些测试,发现随应用程序一起删除的唯一快捷方式类型是从菜单“添加到主屏幕 => 快捷方式 => 应用程序 => 应用程序活动”创建的快捷方式。卸载应用程序后,以编程方式创建的快捷方式或在 AndroidManifest 中声明的快捷方式仍保留在主屏幕上。
论坛上几乎没有关于这个主题的文档和帖子,我有点困惑为什么这样一个与Android安全策略不矛盾的简单操作不能直接实现。
有没有办法让操作系统在应用程序卸载时删除相应的快捷方式?
我可以在删除应用程序之前捕获正在卸载应用程序的事件吗?
我不相信你能做到这一点。
首先,因为您无法卸载设备固件上预装的应用程序 - 它们存在于设备固件上/system
分区是只读文件系统。
其次,正如您所指出的,您的申请没有收到正在卸载的通知.
如果用户可能不想使用您的应用程序,他们是否会忽略应用程序图标,就像我对手机上预装的几个应用程序所做的那样?
Edit:
如果您要预安装应用程序(但不是像 commonsware.com 所说的那样在固件上安装),您可以预安装twoAPK。其中一个没有发射器,仅由一个处理广播接收器的广播接收器组成ACTION_PACKAGE_REMOVED
事件和通话UNINSTALL_SHORTCUT
.
我不相信有任何明确的权限检查需要通过添加它的同一应用程序删除快捷方式,但无论如何您都可以通过使用来解决这个问题sharedUserId对于这两个 APK。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)