这部分的修改主要是在Android源码的\frameworks\base\services\core\java\com\android\server\pm\DefaultPermissionGrantPolicy.java
首先给应用定义所需要的权限,例如:
private static final Set<String> XIAOGUIVOICE_PERMISSIONS = new ArraySet<>();
static {
XIAOGUIVOICE_PERMISSIONS.add(Manifest.permission.READ_PHONE_STATE);
XIAOGUIVOICE_PERMISSIONS.add(Manifest.permission.RECORD_AUDIO);
}
然后就是在private void grantDefaultSystemHandlerPermissions(int userId)加具体的权限,例如:
PackageParser.Package xiaoguivoicedemoPackage = getSystemPackageLPr(
"settings.halov.com.xiaoguivoicedemo");
if (printSpoolerPackage != null
&& doesPackageSupportRuntimePermissions(xiaoguivoicedemoPackage)) {
grantRuntimePermissionsLPw(xiaoguivoicedemoPackage, XIAOGUIVOICE_PERMISSIONS, true, userId);
}
这两步就可以实现给某个应用加锁需要的权限了,很简单。