我是一名新的Android开发人员,正在尝试制作一个包管理器应用。我列出了所有已安装的应用程序,现在我想在没有用户交互的情况下卸载特定的应用程序。是否可以使用无根电话?
答案 0 :(得分:0)
PackageManager类包含@hide method : deletePackage
。但是你不能使用它,因为:
这是一个隐藏的方法,因此在普通应用程序中调用它的唯一方法是使用反射(不建议这样做,因为它可能会在未来版本的Android API中中断)
此方法的使用需要权限android.Manifest.permission#DELETE_PACKAGES
,并且此权限只能授予使用系统密钥签名的应用。 (即使您在清单中询问此权限,除非您的应用程序使用系统密钥签名,否则它将无法获得授权)
因此,您无法在简单/标准应用中执行此操作。您唯一的解决方案(在非根电话上)是使用系统密钥对您的应用进行签名,为此您需要与制造商协商,以便您的应用使用系统密钥进行签名。