首页 > 解决方案 > 删除应用意图不适用于 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 上打开卸载对话框?

标签: androidandroid-intentandroid-9.0-pie

解决方案


该代码仍然可以工作,假设该应用程序没有请求执行它的权限。

从 Android Pie (Android 9) 开始,应用程序需要声明它们请求删除应用程序。这可以通过将此权限添加到AndroidManifest.xml

<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES"/>

* 请注意,不需要在运行时请求此权限。在 Manifest 中声明这一点就足够了。


此外,我们可以使用该ACTION_UNINSTALL_PACKAGE操作代替删除包的请求。对于此操作,文档提到自 Android Pie 起需要上述权限才能使其工作。


推荐阅读