我知道卸载应用程序的唯一方法是发送一个intent(as described here),但这会打开一个活动,供用户确认卸载。
我知道没有其他方法可以在没有用户干预的情况下卸载其他应用程序(除非您拥有DELETE_PACKAGES权限,这意味着您是OEM)。
但是,有没有办法在没有用户干预的情况下卸载我自己的应用程序?
答案 0 :(得分:5)
PackageManager
中有一个名为deletePackage
的隐藏函数(可以通过反射调用)。但它需要android.permission.DELETE_PACKAGES
权限。无论您是否是应用程序的所有者,都必须获得此许可。此权限不会授予第三方应用。
所以,基本上,你不能卸载应用程序,即使它是你的。这实际上是有道理的,因为用户应该控制诸如安装和卸载应用之类的关键事件。想象一下,如果用户刚刚从市场上安装了应用程序但却无法找到它(或类似场景),那么用户会感到沮丧。
您应该使用正确的消息禁用应用程序功能。这将更加用户友好。
答案 1 :(得分:0)
如果您的应用已配置为设备所有者,则可以静默完成应用安装和卸载。
设备所有者是从Android 5.0开始引入的。 从6.0开始添加了静默安装功能。
来自andorid来源:
if ((mPm.checkUidPermission(android.Manifest.permission.INSTALL_PACKAGES, installerUid)
== PackageManager.PERMISSION_GRANTED)
|| (installerUid == Process.ROOT_UID)
|| mIsInstallerDeviceOwner) {
mPermissionsAccepted = true;
} else {
mPermissionsAccepted = false;
}
此权限授予root用户,系统应用和设备所有者。