From 7bc6bec6a6e4ba2be5ab7abc50ef89dadf91f09b Mon Sep 17 00:00:00 2001 From: atrost Date: Mon, 2 Mar 2020 12:43:05 +0000 Subject: [PATCH] Add @RequiresPemission compat framework APIs. The permission check is already implemented server side. Test: m Bug: 150471082 Change-Id: I63d807be84bccb237f69562cdbce22f99a964d1a --- api/system-current.txt | 4 ++-- core/java/android/app/compat/CompatChanges.java | 11 +++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index ae893b58ee3d2..5e63144bf4933 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -1170,8 +1170,8 @@ package android.app.compat { public final class CompatChanges { method public static boolean isChangeEnabled(long); - method public static boolean isChangeEnabled(long, @NonNull String, @NonNull android.os.UserHandle); - method public static boolean isChangeEnabled(long, int); + method @RequiresPermission(allOf={"android.permission.READ_COMPAT_CHANGE_CONFIG", "android.permission.LOG_COMPAT_CHANGE"}) public static boolean isChangeEnabled(long, @NonNull String, @NonNull android.os.UserHandle); + method @RequiresPermission(allOf={"android.permission.READ_COMPAT_CHANGE_CONFIG", "android.permission.LOG_COMPAT_CHANGE"}) public static boolean isChangeEnabled(long, int); } } diff --git a/core/java/android/app/compat/CompatChanges.java b/core/java/android/app/compat/CompatChanges.java index 0d5e45f9e5d4f..28b73406b877b 100644 --- a/core/java/android/app/compat/CompatChanges.java +++ b/core/java/android/app/compat/CompatChanges.java @@ -17,6 +17,7 @@ package android.app.compat; import android.annotation.NonNull; +import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.compat.Compatibility; import android.os.UserHandle; @@ -54,14 +55,13 @@ public final class CompatChanges { *

Note that this involves a binder call to the system server (unless running in the system * server). If the binder call fails, a {@code RuntimeException} will be thrown. * - *

Caller must have android.permission.READ_COMPAT_CHANGE_CONFIG permission. If it - * doesn't, a {@code RuntimeException} will be thrown. - * * @param changeId The ID of the compatibility change in question. * @param packageName The package name of the app in question. * @param user The user that the operation is done for. * @return {@code true} if the change is enabled for the current app. */ + @RequiresPermission(allOf = {android.Manifest.permission.READ_COMPAT_CHANGE_CONFIG, + android.Manifest.permission.LOG_COMPAT_CHANGE}) public static boolean isChangeEnabled(long changeId, @NonNull String packageName, @NonNull UserHandle user) { return QUERY_CACHE.query(ChangeIdStateQuery.byPackageName(changeId, packageName, @@ -75,9 +75,6 @@ public final class CompatChanges { *

Note that this involves a binder call to the system server (unless running in the system * server). If the binder call fails, {@code RuntimeException} will be thrown. * - *

Caller must have android.permission.READ_COMPAT_CHANGE_CONFIG permission. If it - * doesn't, a {@code RuntimeException} will be thrown. - * *

Returns {@code true} if there are no installed packages for the required UID, or if the * change is enabled for ALL of the installed packages associated with the provided UID. Please * use a more specific API if you want a different behaviour for multi-package UIDs. @@ -86,6 +83,8 @@ public final class CompatChanges { * @param uid The UID of the app in question. * @return {@code true} if the change is enabled for the current app. */ + @RequiresPermission(allOf = {android.Manifest.permission.READ_COMPAT_CHANGE_CONFIG, + android.Manifest.permission.LOG_COMPAT_CHANGE}) public static boolean isChangeEnabled(long changeId, int uid) { return QUERY_CACHE.query(ChangeIdStateQuery.byUid(changeId, uid)); }