android - 删除应用意图不适用于 android pie
问题描述
这在过去有效,但不再适用于我的 android pie 设备(在最近的 pie 更新之前有效):
fun uninstallApp(packageName: String) {
val packageURI = Uri.parse("package:$packageName")
val intent = Intent(Intent.ACTION_DELETE, packageURI)
intent .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent )
}
我找不到任何表明此意图不再起作用的文档。
有谁知道是否有另一种方法可以在 android pie 上打开卸载对话框?
解决方案
该代码仍然可以工作,假设该应用程序没有请求执行它的权限。
从 Android Pie (Android 9) 开始,应用程序需要声明它们请求删除应用程序。这可以通过将此权限添加到AndroidManifest.xml
:
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES"/>
* 请注意,不需要在运行时请求此权限。在 Manifest 中声明这一点就足够了。
此外,我们可以使用该ACTION_UNINSTALL_PACKAGE
操作代替删除包的请求。对于此操作,文档提到自 Android Pie 起需要上述权限才能使其工作。
推荐阅读
- r - 尽管其他功能因素在 R 中编写规则,但 Apriori 标签仍被拒绝
- python - 如何在自定义数据上运行 Pandas read_csv 的解析逻辑?
- google-chrome - Google Chrome 中 ctrl-r、F5 和刷新按钮的区别
- spring - 获取 ThreadPoolTaskExecutor 的队列大小并在 Spring Boot 中添加到队列
- python - OpenAI Gym 自定义环境:具有真实值的离散观察空间
- powerbi - 在 UserPrincipalName 的辅助字段上使用 RLS
- javascript - 如何在 JXA 中启动异步后台进程
- php - 使用 mysql 生成当前、30、60、90 天的老化报告
- amazon-web-services - AWS Step函数:如何在状态机中传递静态键值对(不使用类型:传递)?
- hash - 加密图像的深度学习