frameworks\base\services\core\java\com\android\server\pm\DefaultPermissionGrantPolicy.java
先仿照已有的代码,给需要默认开权限的APP增加权限组:
/// START. Enable permissions during first boot. By ShawnXiaFei@20180927.
private static final Set<String> USAGE_PERMISSIONS = new ArraySet<>();
static {
//USAGE_PERMISSIONS.add(Manifest.permission.GET_TASKS);
USAGE_PERMISSIONS.add(Manifest.permission.PACKAGE_USAGE_STATS);
//USAGE_PERMISSIONS.add(Manifest.permission.REORDER_TASKS);
}
/// END. Enable permissions during first boot. By ShawnXiaFei@20180927.
然后在 grantDefaultSystemHandlerPermissions 方法末尾处增加代码:
(或搜索“Music”)
private void grantDefaultSystemHandlerPermissions(int userId) {
Log.i(TAG, "Granting permissions to default platform handlers for user " + userId);
// 省略大量代码
synchronized (mService.mPackages) {
// Installer
PackageParser.Package installerPackage = getSystemPackageLPr(
mService.mRequiredInstallerPackage);
if (installerPackage != null
&& doesPackageSupportRuntimePermissions(installerPackage)) {
grantRuntimePermissionsLPw(installerPackage, STORAGE_PERMISSIONS, true, userId);
}
// 省略大量代码
// Music
Intent musicIntent = new Intent(Intent.ACTION_VIEW);
musicIntent.addCategory(Intent.CATEGORY_DEFAULT);
musicIntent.setDataAndType(Uri.fromFile(new File("foo.mp3")),
AUDIO_MIME_TYPE);
PackageParser.Package musicPackage = getDefaultSystemHandlerActivityPackageLPr(
musicIntent, userId);
if (musicPackage != null
&& doesPackageSupportRuntimePermissions(musicPackage)) {
grantRuntimePermissionsLPw(musicPackage, STORAGE_PERMISSIONS, userId);
}
/// START. Enable permissions during first boot. By ShawnXiaFei@20180927.
PackageParser.Package launcherPkg = getPackageLPr("com.rustybrick.kioskhome");
if(null != launcherPkg){
grantRuntimePermissionsLPw(launcherPkg, USAGE_PERMISSIONS, true, userId);
//grantRuntimePermissionsLPw(launcherPkg, STORAGE_PERMISSIONS, /*true,*/ userId);
}
/// END. Enable permissions during first boot. By ShawnXiaFei@20180927.
mService.mSettings.onDefaultRuntimePermissionsGrantedLPr(userId);
}
}