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) {// InstallerPackageParser.Package installerPackage = getSystemPackageLPr(mService.mRequiredInstallerPackage);if (installerPackage != null&& doesPackageSupportRuntimePermissions(installerPackage)) {grantRuntimePermissionsLPw(installerPackage, STORAGE_PERMISSIONS, true, userId);}// 省略大量代码// MusicIntent 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);}}
