安卓中静默安装出现的权限问题

来源:互联网 发布:node js 离线文档 编辑:程序博客网 时间:2024/06/05 17:03

最近在项目中做安卓电视静默安装的时候出现了一个问题:

E/AndroidRuntime( 3302 ): java.lang.SecurityException: Neither user 10074 nor current process has android.permission.INSTALL_PACKAGES.E/AndroidRuntime( 3302 ): at android.os.Parcel.readException(Parcel.java:1472)E/AndroidRuntime( 3302 ): at android.os.Parcel.readException(Parcel.java:1426)E/AndroidRuntime( 3302 ): at android.content.pm.IPackageManager$Stub$Proxy.installPackageWith VerificationAndEncryption(IPackageManager.java:3604)E/AndroidRuntime( 3302 ): at com.android.commands.pm.Pm.runInstall(Pm.java:957)E/AndroidRuntime( 3302 ): at com.android.commands.pm.Pm.run(Pm.java:116)E/AndroidRuntime( 3302 ): at com.android.commands.pm.Pm.main(Pm.java:79)E/AndroidRuntime( 3302 ): at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)E/AndroidRuntime( 3302 ): at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243)E/AndroidRuntime( 3302 ): at dalvik.system.NativeStart.main(Native Method)

1.解决方案

1 该项目是公司自己做的系统应用来启动调试自己的电视项目用的,有root权限了。默认就把app放在system/app上,之前公司的盒子是4.0的,但公司指定了新的盒子是android4.4的后,发现一个问题,
会经常出现安全异常如上,最后发现在安卓4.4之后 放到system/priv-app下就解决了。

为什么?

  这是因为/system/priv-app中包括Launcher,systemui, settingsprovider等,均是系统的核心应用,这些应用能使用系统级的权限,而原本的system/app的的权限会不够高。在4.4之前的所有/system/app下的软件都能使用系统级的权限。
对应的只要出现java.lang.SecurityException: Neither user 10032 nor current process has android.permission.MODIFY_PHONE_STATE 或者 java.lang.SecurityException: ConnectivityService: Neither user 10036 nor current process hasandroid.permission.ACCESS_NETWORK_STATE.等一般的安全异常问题,都是权限不够导致的。

2 系统应用签名需要与framwork层签名一致,有了和系统签名一致即使放在system/app上也可以实现静默升级。

0 0
原创粉丝点击