KK版本上应用权限无法获取的问题

KK 项目上发现如下权限问题:
I/AEE/AED (18730): java.lang.SecurityException: NetworkPolicy: 
Neither user 10003 nor current process has android.permission.CONNECTIVITY_INTERNAL.

发现该应用的manifest中已经声明了此权限,但是该应用安装的过程中却没能获取到此权限。

应用安装时的Log如下:

W/PackageManager(15113): Not granting permission android.permission.CONNECTIVITY_INTERNAL 
to package com.android.providers.downloads (protectionLevel=18 flags=0x8be45)

关于应用安装后获取到哪些权限可以通过:adb shell dumpsys package命令查看。

 

关于protectionLevel的定义和说明见资源文件:attrs_manifest.xml

 

权限的 protectionLevel 定义在资源文件: framework/base/core/res/AndroidManifest.xml framework/base/data/etc/platform.xml


也可以通过命令查看到部分权限的 protectionLevel adb shell pm list permissions -f

CONNECTIVITY_INTERNAL权限的protectionLevel18,说明此权限为"signatureOrSystem"。在KK版本之前申请此级别权限的应用必须放置于/system/app目录下,KK版本上该目录更改至:/system/priv-app

此保护策略在PackageManagerService中实现。

KK版本上通过添加LOCAL_PRIVILEGED_MODULE属性控制apk的生成目标目录:

ifeq ($(PLATFORM_SDK_VERSION), 19)
    LOCAL_PRIVILEGED_MODULE := true
endif 

如果大家手上有此类问题可以参考此方法修改。

你可能感兴趣的:(Permission,APP,kk)