修改点在
/frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
在grantDefaultSystemHandlerPermissions方法里面可以看到有很多默认获取权限的代码,在这里添加即可如:
//add by xxx begin
PackageInfo miniscreenPackageInfo = pm != null ? pm.getSystemPackageInfo("需要添加权限应用的包名") : null;
if (miniscreenPackageInfo != null
&& doesPackageSupportRuntimePermissions(miniscreenPackageInfo)) {
grantPermissionsToSystemPackage(pm, "需要添加权限应用的包名",
userId, FOREGROUND_LOCATION_PERMISSIONS);
}
//add by xxx end
这样修改会引起GMS问题,需要在/frameworks/base/core/java/android/app/ApplicationPackageManager.java的checkPermission方法里面同步修改
@Override
public int checkPermission(String permName, String pkgName) {
//add by xxx for grant permission begin
String taker = mContext.getPackageName();
if ("com.google.android.permission.gts".equals(taker)) {
if("需要添加权限应用的包名".equals(pkgName)){
return PERMISSION_DENIED;
}
}
//add by xxx,for grant permission end
return PermissionManager.checkPackageNamePermission(permName, pkgName, getUserId());
}