我所知道的卸载应用程序的唯一方法是通过发送意图(如此处所述),但这会打开一个活动以供用户确认卸载。
我知道,除非您拥有DELETE_PACKAGES权限(这意味着您是OEM),否则没有其他方法可以卸载其他应用程序而无需用户干预。
但是,有没有一种方法可以卸载我的应用程序而无需用户干预?
我知道,除非您拥有DELETE_PACKAGES权限(这意味着您是OEM),否则没有其他方法可以卸载其他应用程序而无需用户干预。
但是,有没有一种方法可以卸载我的应用程序而无需用户干预?
PackageManager
中有一个名为 deletePackage
的隐藏函数(可以通过反射调用)。但它需要 android.permission.DELETE_PACKAGES
权限。无论你是应用程序的所有者还是其他用户,你都必须被授予该权限。而这个权限不会被授予第三方应用程序。如果您的应用程序配置为设备所有者,则可以静默安装和卸载应用程序。
设备所有者从Android 5.0开始引入。 静默安装功能从6.0版本开始添加。
来自Android源码:
if ((mPm.checkUidPermission(android.Manifest.permission.INSTALL_PACKAGES, installerUid)
== PackageManager.PERMISSION_GRANTED)
|| (installerUid == Process.ROOT_UID)
|| mIsInstallerDeviceOwner) {
mPermissionsAccepted = true;
} else {
mPermissionsAccepted = false;
}
这个特权是赋予已经获取了 root 权限的用户、系统应用和设备所有者。