在做ROM开发时,如果添加了第三方应用,在Andriod6.0以上,就会出现申请权限弹窗的问题。 而在有的客户需求中,系统应用不应该弹窗,而是直接授予默认权限。 下面就介绍给应用添加默认权限的操作。 以Camera应用为例,我的Camera需要弹窗申请的权限如下:
分别是
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
在Android源码下, frameworks/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
这个文件是用来控制系统APP所自带的权限的,在这里面添加系统APP的权限后,第一次开机就会将该权限赋予APP。 具体添加方法如下:
// GGCamera
// add by guohongcheng_20171030 for GGCamera permissions
PackageParser.Package GGCameraPackage = getPackageLPr(
"com.android.GGcamera");
Log.d(TAG, "GGCameraPackage >> ");
if (GGCameraPackage != null) {
//grantRuntimePermissionsLPw(GGCameraPackage, STORAGE_PERMISSIONS, true, userId);
Log.d(TAG, "GGCameraPackage >> not null");
grantRuntimePermissionsLPw(GGCameraPackage, CAMERA_PERMISSIONS, userId);
grantRuntimePermissionsLPw(GGCameraPackage, MICROPHONE_PERMISSIONS, userId);
grantRuntimePermissionsLPw(GGCameraPackage, STORAGE_PERMISSIONS, userId);
}else{
Log.d(TAG, "GGCameraPackage >> null");
}