Android更新的系统应用程序未被授予新权限。

4

我有一个应用程序安装在我们的自定义ROM中的/system/app目录下。

当我添加一个系统权限,例如android.permission.REBOOT,并安装系统应用程序的更新时,更新后的应用程序不会获得新添加的权限。

当我添加一个非系统权限,例如android.permission.INTERNET时,应用程序可以看到新的权限。

我们正在尝试了解是否有一种方法可以避免OTA升级系统应用程序来解决这个问题。

编辑:以下是我们安装包的方法,

Class<?>[] installTypes = new Class[]{Uri.class, IPackageInstallObserver.class, int.class, String.class};
installMethod = pm.getClass().getMethod("installPackage", installTypes);
...
installMethod.invoke(pm, new Object[]{apkFile, observer, INSTALL_REPLACE_EXISTING, null});

你是如何安装更新的? - CommonsWare
وˆ‘ن»¬و­£هœ¨ن½؟用هڈچه°„调用PackageManager.installPackage()و–¹و³•م€‚ - Jeffrey Blattman
请参见上面的编辑代码。 - Jeffrey Blattman
你在清单文件中增加了 versionCode 吗? - Bojan Radivojevic
是的,版本代码已经增加。 - Jeffrey Blattman
1个回答

3
系统应用程序无法通过升级获得新的权限。我认为其原因是,如果你曾经破坏了系统应用程序,你可以对其进行升级,并添加任何你想要的权限,包括那些只能授予系统应用程序的所有危险权限。
如果你希望系统应用程序具有新权限,则需要执行OTA或以其他方式将APK的新位获取到/system/app中。

2
你有这方面的参考资料吗,无论是文档还是来源?如果能看到您获取这些信息的位置/方式,那将是回答的一个很好的补充。 - Geobits
1
抱歉,只是经验的证明。就像我之前提到的,这也是一些常识,它的运作方式就是这样。当然,我也可能错了,这一切可能是由于我没有想到的某些因素导致的。 - Jeffrey Blattman
我同意这是很好的常识,但我主要是在寻找一些具体的东西,以便在将来有人问这个问题时可以指出。 - Geobits

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接