diff options
| -rwxr-xr-x | api/system-current.txt | 5 | ||||
| -rw-r--r-- | core/java/android/permission/PermissionManager.java | 6 | ||||
| -rw-r--r-- | core/res/AndroidManifest.xml | 5 | ||||
| -rw-r--r-- | data/etc/privapp-permissions-platform.xml | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/permission/PermissionManagerService.java | 14 |
5 files changed, 16 insertions, 15 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 6e05db9d2d2e..2260b55234cb 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -111,6 +111,7 @@ package android { field public static final String MANAGE_CONTENT_SUGGESTIONS = "android.permission.MANAGE_CONTENT_SUGGESTIONS"; field public static final String MANAGE_DEBUGGING = "android.permission.MANAGE_DEBUGGING"; field public static final String MANAGE_IPSEC_TUNNELS = "android.permission.MANAGE_IPSEC_TUNNELS"; + field public static final String MANAGE_ONE_TIME_PERMISSION_SESSIONS = "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS"; field public static final String MANAGE_ROLE_HOLDERS = "android.permission.MANAGE_ROLE_HOLDERS"; field public static final String MANAGE_ROLLBACKS = "android.permission.MANAGE_ROLLBACKS"; field public static final String MANAGE_SENSOR_PRIVACY = "android.permission.MANAGE_SENSOR_PRIVACY"; @@ -7242,8 +7243,8 @@ package android.permission { method @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS) public void grantDefaultPermissionsToLuiApp(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>); method @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS) public void revokeDefaultPermissionsFromLuiApps(@NonNull String[], @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>); method @RequiresPermission(android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY) public void setRuntimePermissionsVersion(@IntRange(from=0) int); - method @RequiresPermission(allOf={android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void startOneTimePermissionSession(@NonNull String, long, int, int); - method @RequiresPermission(allOf={android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void stopOneTimePermissionSession(@NonNull String); + method @RequiresPermission(android.Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS) public void startOneTimePermissionSession(@NonNull String, long, int, int); + method @RequiresPermission(android.Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS) public void stopOneTimePermissionSession(@NonNull String); } public static final class PermissionManager.SplitPermissionInfo { diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java index a3215a47fd62..258329203bdb 100644 --- a/core/java/android/permission/PermissionManager.java +++ b/core/java/android/permission/PermissionManager.java @@ -318,8 +318,7 @@ public final class PermissionManager { * @hide */ @SystemApi - @RequiresPermission(allOf = {Manifest.permission.REVOKE_RUNTIME_PERMISSIONS, - Manifest.permission.PACKAGE_USAGE_STATS}) + @RequiresPermission(Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS) public void startOneTimePermissionSession(@NonNull String packageName, long timeoutMillis, @ActivityManager.RunningAppProcessInfo.Importance int importanceToResetTimer, @ActivityManager.RunningAppProcessInfo.Importance int importanceToKeepSessionAlive) { @@ -340,8 +339,7 @@ public final class PermissionManager { * @hide */ @SystemApi - @RequiresPermission(allOf = {Manifest.permission.REVOKE_RUNTIME_PERMISSIONS, - Manifest.permission.PACKAGE_USAGE_STATS}) + @RequiresPermission(Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS) public void stopOneTimePermissionSession(@NonNull String packageName) { try { mPermissionManager.stopOneTimePermissionSession(packageName, diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 7719165aa402..5410cf51827c 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -3591,6 +3591,11 @@ <permission android:name="android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS" android:protectionLevel="signature|privileged" /> + <!-- @SystemApi Allows an application to start and stop one time permission sessions + @hide --> + <permission android:name="android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS" + android:protectionLevel="signature|installer" /> + <!-- @SystemApi Allows an application to manage the holders of a role. @hide STOPSHIP b/145526313: Remove wellbeing protection flag from MANAGE_ROLE_HOLDERS. --> diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index f1941fcd2598..38a9f4653c40 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -130,7 +130,6 @@ applications that come with the platform <permission name="android.permission.APPROVE_INCIDENT_REPORTS"/> <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE" /> <permission name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME" /> - <permission name="android.permission.PACKAGE_USAGE_STATS" /> </privapp-permissions> <privapp-permissions package="com.android.phone"> diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 605f8695f2cf..9cd6f16ca118 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -3025,10 +3025,9 @@ public class PermissionManagerService extends IPermissionManager.Stub { @Override public void startOneTimePermissionSession(String packageName, @UserIdInt int userId, long timeoutMillis, int importanceToResetTimer, int importanceToKeepSessionAlive) { - mContext.enforceCallingPermission(Manifest.permission.REVOKE_RUNTIME_PERMISSIONS, - "Must be able to revoke runtime permissions to register permissions as one time."); - mContext.enforceCallingPermission(Manifest.permission.PACKAGE_USAGE_STATS, - "Must be able to access usage stats to register permissions as one time."); + mContext.enforceCallingPermission(Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS, + "Must hold " + Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS + + " to register permissions as one time."); packageName = Preconditions.checkNotNull(packageName); long token = Binder.clearCallingIdentity(); @@ -3042,10 +3041,9 @@ public class PermissionManagerService extends IPermissionManager.Stub { @Override public void stopOneTimePermissionSession(String packageName, @UserIdInt int userId) { - mContext.enforceCallingPermission(Manifest.permission.REVOKE_RUNTIME_PERMISSIONS, - "Must be able to revoke runtime permissions to remove permissions as one time."); - mContext.enforceCallingPermission(Manifest.permission.PACKAGE_USAGE_STATS, - "Must be able to access usage stats to remove permissions as one time."); + mContext.enforceCallingPermission(Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS, + "Must hold " + Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS + + " to remove permissions as one time."); Preconditions.checkNotNull(packageName); long token = Binder.clearCallingIdentity(); |