如何使用新的 PackageInstaller api 卸载 android 应用程序?
How to uninstall android apps using the new PackageInstaller api?
在 API 级别 29 中弃用了使用 ACTION_UNINSTALL_PACKAGE
卸载 android 应用程序的旧方法。现在建议改用 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
。我试图从当前的 activity 发出一个意图,但所有这些代码所做的只是重新创建 activity。有什么想法吗?谢谢
基于 Intent 的方法仍然适用于 API 级别 29+ 的设备。只需将您的 Intent 操作更改为
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值。
在 API 级别 29 中弃用了使用 ACTION_UNINSTALL_PACKAGE
卸载 android 应用程序的旧方法。现在建议改用 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
。我试图从当前的 activity 发出一个意图,但所有这些代码所做的只是重新创建 activity。有什么想法吗?谢谢
基于 Intent 的方法仍然适用于 API 级别 29+ 的设备。只需将您的 Intent 操作更改为
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值。