diff --git a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java index c567c272eae709701860639ab71228048eab2471..30152aff30df9efe7c87ee70ae8e89160bbaca8a 100644 --- a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java @@ -147,6 +147,12 @@ final class DefaultPermissionGrantPolicy { STORAGE_PERMISSIONS.add(Manifest.permission.READ_EXTERNAL_STORAGE); STORAGE_PERMISSIONS.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); } + + private static final Set TASKS_PERMISSIONS = new ArraySet<>(); + static { + TASKS_PERMISSIONS.add("org.dmfs.permission.READ_TASKS"); + TASKS_PERMISSIONS.add("org.dmfs.permission.WRITE_TASKS"); + } private static final int MSG_READ_DEFAULT_PERMISSION_EXCEPTIONS = 1; @@ -701,6 +707,17 @@ final class DefaultPermissionGrantPolicy { && doesPackageSupportRuntimePermissions(storageManagerPckg)) { grantRuntimePermissionsLPw(storageManagerPckg, STORAGE_PERMISSIONS, true, userId); } + + // Account Manager + PackageParser.Package accountManagerPackage = getSystemPackageLPr("foundation.e.accountmanager"); + if (accountManagerPackage != null + && doesPackageSupportRuntimePermissions(accountManagerPackage)) { + grantRuntimePermissionsLPw(accountManagerPackage, CONTACTS_PERMISSIONS, userId); + grantRuntimePermissionsLPw(accountManagerPackage, CALENDAR_PERMISSIONS, userId); + grantRuntimePermissionsLPw(accountManagerPackage, LOCATION_PERMISSIONS, userId); + grantRuntimePermissionsLPw(accountManagerPackage, TASKS_PERMISSIONS, userId); + } + mService.mSettings.onDefaultRuntimePermissionsGrantedLPr(userId); } }