4

API 级别 29 已弃用旧的卸载 android 应用程序的方法ACTION_UNINSTALL_PACKAGE。现在建议PackageInstaller.uninstall(packageName: String, statusReceiver: IntentSender)改用。到目前为止,这是一个想法:

fun uninstal(){
    val packageName = "some package name"
    val packageInstaller = this.packageManager.packageInstaller
    val intent = Intent(this, this::class.java)
    val sender = PendingIntent.getActivity(this, 0, intent, 0)
    packageInstaller.uninstall(packageName, sender.intentSender) 
}

我无法弄清楚如何提供IntentSender. 我试图在当前活动中创建一个意图,但是这些代码所做的只是重新创建活动。请问有什么想法吗?谢谢

4

1 回答 1

1

基于 Intent 的方法仍然适用于 API Level 29+ 设备。只需将您的 Intent 操作更改为

意图.ACTION_DELETE

此外,您还需要添加删除包的权限。

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

这是完整的代码:

val pkg             = "package_to_delete" 
val uri: Uri        = Uri.fromParts("package", pkg, null)
val uninstallIntent = Intent(Intent.ACTION_DELETE, uri)

startActivityForResult(uninstallIntent, EXIT_REQUEST)

在上面的代码中,pkg 是您要删除的 App 的 packageName 字符串格式,EXIT_REQUEST 是一个 Integer 值。

于 2022-01-28T14:07:04.777 回答