frameworks\base\services\core\java\com\android\server\pm\DefaultPermissionGrantPolicy.java
    先仿照已有的代码,给需要默认开权限的APP增加权限组:

    1. /// START. Enable permissions during first boot. By ShawnXiaFei@20180927.
    2. private static final Set<String> USAGE_PERMISSIONS = new ArraySet<>();
    3. static {
    4. //USAGE_PERMISSIONS.add(Manifest.permission.GET_TASKS);
    5. USAGE_PERMISSIONS.add(Manifest.permission.PACKAGE_USAGE_STATS);
    6. //USAGE_PERMISSIONS.add(Manifest.permission.REORDER_TASKS);
    7. }
    8. /// END. Enable permissions during first boot. By ShawnXiaFei@20180927.

    然后在 grantDefaultSystemHandlerPermissions 方法末尾处增加代码:
    (或搜索“Music”)

    1. private void grantDefaultSystemHandlerPermissions(int userId) {
    2. Log.i(TAG, "Granting permissions to default platform handlers for user " + userId);
    3. // 省略大量代码
    4. synchronized (mService.mPackages) {
    5. // Installer
    6. PackageParser.Package installerPackage = getSystemPackageLPr(
    7. mService.mRequiredInstallerPackage);
    8. if (installerPackage != null
    9. && doesPackageSupportRuntimePermissions(installerPackage)) {
    10. grantRuntimePermissionsLPw(installerPackage, STORAGE_PERMISSIONS, true, userId);
    11. }
    12. // 省略大量代码
    13. // Music
    14. Intent musicIntent = new Intent(Intent.ACTION_VIEW);
    15. musicIntent.addCategory(Intent.CATEGORY_DEFAULT);
    16. musicIntent.setDataAndType(Uri.fromFile(new File("foo.mp3")),
    17. AUDIO_MIME_TYPE);
    18. PackageParser.Package musicPackage = getDefaultSystemHandlerActivityPackageLPr(
    19. musicIntent, userId);
    20. if (musicPackage != null
    21. && doesPackageSupportRuntimePermissions(musicPackage)) {
    22. grantRuntimePermissionsLPw(musicPackage, STORAGE_PERMISSIONS, userId);
    23. }
    24. /// START. Enable permissions during first boot. By ShawnXiaFei@20180927.
    25. PackageParser.Package launcherPkg = getPackageLPr("com.rustybrick.kioskhome");
    26. if(null != launcherPkg){
    27. grantRuntimePermissionsLPw(launcherPkg, USAGE_PERMISSIONS, true, userId);
    28. //grantRuntimePermissionsLPw(launcherPkg, STORAGE_PERMISSIONS, /*true,*/ userId);
    29. }
    30. /// END. Enable permissions during first boot. By ShawnXiaFei@20180927.
    31. mService.mSettings.onDefaultRuntimePermissionsGrantedLPr(userId);
    32. }
    33. }