Loading api/system-current.txt +3 −1 Original line number Diff line number Diff line Loading @@ -5522,6 +5522,8 @@ package android.permission { public final class PermissionControllerManager { method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public void revokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull java.util.concurrent.Executor, @NonNull android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback); field public static final int COUNT_ONLY_WHEN_GRANTED = 1; // 0x1 field public static final int COUNT_WHEN_SYSTEM = 2; // 0x2 field public static final int REASON_INSTALLER_POLICY_VIOLATION = 2; // 0x2 field public static final int REASON_MALWARE = 1; // 0x1 } Loading @@ -5535,7 +5537,7 @@ package android.permission { ctor public PermissionControllerService(); method public final void attachBaseContext(android.content.Context); method public final android.os.IBinder onBind(android.content.Intent); method public abstract int onCountPermissionApps(@NonNull java.util.List<java.lang.String>, boolean, boolean); method public abstract int onCountPermissionApps(@NonNull java.util.List<java.lang.String>, int); method @NonNull public abstract java.util.List<android.permission.RuntimePermissionPresentationInfo> onGetAppPermissions(@NonNull String); method @NonNull public abstract java.util.List<android.permission.RuntimePermissionUsageInfo> onGetPermissionUsages(boolean, long); method public abstract void onGetRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.OutputStream); Loading api/test-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -1694,6 +1694,8 @@ package android.permission { public final class PermissionControllerManager { method @RequiresPermission("android.permission.REVOKE_RUNTIME_PERMISSIONS") public void revokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull java.util.concurrent.Executor, @NonNull android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback); field public static final int COUNT_ONLY_WHEN_GRANTED = 1; // 0x1 field public static final int COUNT_WHEN_SYSTEM = 2; // 0x2 field public static final int REASON_INSTALLER_POLICY_VIOLATION = 2; // 0x2 field public static final int REASON_MALWARE = 1; // 0x1 } Loading core/java/android/permission/IPermissionController.aidl +2 −2 Original line number Diff line number Diff line Loading @@ -32,8 +32,8 @@ oneway interface IPermissionController { void getRuntimePermissionBackup(in UserHandle user, in ParcelFileDescriptor pipe); void getAppPermissions(String packageName, in RemoteCallback callback); void revokeRuntimePermission(String packageName, String permissionName); void countPermissionApps(in List<String> permissionNames, boolean countOnlyGranted, boolean countSystem, in RemoteCallback callback); void countPermissionApps(in List<String> permissionNames, int flags, in RemoteCallback callback); void getPermissionUsages(boolean countSystem, long numMillis, in RemoteCallback callback); void isApplicationQualifiedForRole(String roleName, String packageName, in RemoteCallback callback); Loading core/java/android/permission/PermissionControllerManager.java +26 −13 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.permission.PermissionControllerService.SERVICE_INTERFACE; import static com.android.internal.util.Preconditions.checkArgumentNonnegative; import static com.android.internal.util.Preconditions.checkCollectionElementsNotNull; import static com.android.internal.util.Preconditions.checkFlagsArgument; import static com.android.internal.util.Preconditions.checkNotNull; import static com.android.internal.util.Preconditions.checkStringNotEmpty; Loading Loading @@ -113,6 +114,20 @@ public final class PermissionControllerManager { */ public static final int REASON_INSTALLER_POLICY_VIOLATION = 2; /** @hide */ @IntDef(prefix = { "COUNT_" }, value = { COUNT_ONLY_WHEN_GRANTED, COUNT_WHEN_SYSTEM, }, flag = true) @Retention(RetentionPolicy.SOURCE) public @interface CountPermissionAppsFlag {} /** Count an app only if the permission is granted to the app. */ public static final int COUNT_ONLY_WHEN_GRANTED = 1; /** Count and app even if it is a system app. */ public static final int COUNT_WHEN_SYSTEM = 2; /** * Callback for delivering the result of {@link #revokeRuntimePermissions}. */ Loading Loading @@ -162,7 +177,7 @@ public final class PermissionControllerManager { */ public interface OnCountPermissionAppsResultCallback { /** * The result for {@link #countPermissionApps(List, boolean, boolean, * The result for {@link #countPermissionApps(List, int, * OnCountPermissionAppsResultCallback, Handler)}. * * @param numApps The number of apps that have one of the permissions Loading Loading @@ -302,8 +317,8 @@ public final class PermissionControllerManager { * Count how many apps have one of a set of permissions. * * @param permissionNames The permissions the app might have * @param countOnlyGranted Count an app only if the permission is granted to the app * @param countSystem Also count system apps * @param flags Modify which apps to count. By default all non-system apps that request a * permission are counted * @param callback Callback to receive the result * @param handler Handler on which to invoke the callback * Loading @@ -311,13 +326,14 @@ public final class PermissionControllerManager { */ @RequiresPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS) public void countPermissionApps(@NonNull List<String> permissionNames, boolean countOnlyGranted, boolean countSystem, @CountPermissionAppsFlag int flags, @NonNull OnCountPermissionAppsResultCallback callback, @Nullable Handler handler) { checkCollectionElementsNotNull(permissionNames, "permissionNames"); checkFlagsArgument(flags, COUNT_WHEN_SYSTEM | COUNT_ONLY_WHEN_GRANTED); checkNotNull(callback); sRemoteService.scheduleRequest(new PendingCountPermissionAppsRequest(sRemoteService, permissionNames, countOnlyGranted, countSystem, callback, permissionNames, flags, callback, handler == null ? sRemoteService.getHandler() : handler)); } Loading Loading @@ -731,20 +747,17 @@ public final class PermissionControllerManager { AbstractRemoteService.PendingRequest<RemoteService, IPermissionController> { private final @NonNull List<String> mPermissionNames; private final @NonNull OnCountPermissionAppsResultCallback mCallback; private final boolean mCountOnlyGranted; private final boolean mCountSystem; private final @CountPermissionAppsFlag int mFlags; private final @NonNull RemoteCallback mRemoteCallback; private PendingCountPermissionAppsRequest(@NonNull RemoteService service, @NonNull List<String> permissionNames, boolean countOnlyGranted, boolean countSystem, @NonNull OnCountPermissionAppsResultCallback callback, @NonNull Handler handler) { @NonNull List<String> permissionNames, @CountPermissionAppsFlag int flags, @NonNull OnCountPermissionAppsResultCallback callback, @NonNull Handler handler) { super(service); mPermissionNames = permissionNames; mCountOnlyGranted = countOnlyGranted; mCountSystem = countSystem; mFlags = flags; mCallback = callback; mRemoteCallback = new RemoteCallback(result -> { Loading @@ -770,7 +783,7 @@ public final class PermissionControllerManager { public void run() { try { getService().getServiceInterface().countPermissionApps(mPermissionNames, mCountOnlyGranted, mCountSystem, mRemoteCallback); mFlags, mRemoteCallback); } catch (RemoteException e) { Log.e(TAG, "Error counting permission apps", e); } Loading core/java/android/permission/PermissionControllerService.java +15 −9 Original line number Diff line number Diff line Loading @@ -16,9 +16,13 @@ package android.permission; import static android.permission.PermissionControllerManager.COUNT_ONLY_WHEN_GRANTED; import static android.permission.PermissionControllerManager.COUNT_WHEN_SYSTEM; import static com.android.internal.util.Preconditions.checkArgument; import static com.android.internal.util.Preconditions.checkArgumentNonnegative; import static com.android.internal.util.Preconditions.checkCollectionElementsNotNull; import static com.android.internal.util.Preconditions.checkFlagsArgument; import static com.android.internal.util.Preconditions.checkNotNull; import static com.android.internal.util.Preconditions.checkStringNotEmpty; import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage; Loading @@ -37,6 +41,7 @@ import android.os.IBinder; import android.os.ParcelFileDescriptor; import android.os.RemoteCallback; import android.os.UserHandle; import android.permission.PermissionControllerManager.CountPermissionAppsFlag; import android.util.ArrayMap; import android.util.Log; Loading Loading @@ -121,13 +126,13 @@ public abstract class PermissionControllerService extends Service { * Count how many apps have one of a set of permissions. * * @param permissionNames The permissions the app might have * @param countOnlyGranted Count an app only if the permission is granted to the app * @param countSystem Also count system apps * @param flags Modify which apps to count. By default all non-system apps that request a * permission are counted * * @return the number of apps that have one of the permissions */ public abstract int onCountPermissionApps(@NonNull List<String> permissionNames, boolean countOnlyGranted, boolean countSystem); @CountPermissionAppsFlag int flags); /** * Count how many apps have used permissions. Loading Loading @@ -226,17 +231,18 @@ public abstract class PermissionControllerService extends Service { } @Override public void countPermissionApps(List<String> permissionNames, boolean countOnlyGranted, boolean countSystem, RemoteCallback callback) { public void countPermissionApps(List<String> permissionNames, int flags, RemoteCallback callback) { checkCollectionElementsNotNull(permissionNames, "permissionNames"); checkFlagsArgument(flags, COUNT_WHEN_SYSTEM | COUNT_ONLY_WHEN_GRANTED); checkNotNull(callback, "callback"); enforceCallingPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS, null); mHandler.sendMessage( obtainMessage(PermissionControllerService::countPermissionApps, PermissionControllerService.this, permissionNames, countOnlyGranted, countSystem, callback)); PermissionControllerService.this, permissionNames, flags, callback)); } @Override Loading Loading @@ -311,8 +317,8 @@ public abstract class PermissionControllerService extends Service { } private void countPermissionApps(@NonNull List<String> permissionNames, boolean countOnlyGranted, boolean countSystem, @NonNull RemoteCallback callback) { int numApps = onCountPermissionApps(permissionNames, countOnlyGranted, countSystem); @CountPermissionAppsFlag int flags, @NonNull RemoteCallback callback) { int numApps = onCountPermissionApps(permissionNames, flags); Bundle result = new Bundle(); result.putInt(PermissionControllerManager.KEY_RESULT, numApps); Loading Loading
api/system-current.txt +3 −1 Original line number Diff line number Diff line Loading @@ -5522,6 +5522,8 @@ package android.permission { public final class PermissionControllerManager { method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public void revokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull java.util.concurrent.Executor, @NonNull android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback); field public static final int COUNT_ONLY_WHEN_GRANTED = 1; // 0x1 field public static final int COUNT_WHEN_SYSTEM = 2; // 0x2 field public static final int REASON_INSTALLER_POLICY_VIOLATION = 2; // 0x2 field public static final int REASON_MALWARE = 1; // 0x1 } Loading @@ -5535,7 +5537,7 @@ package android.permission { ctor public PermissionControllerService(); method public final void attachBaseContext(android.content.Context); method public final android.os.IBinder onBind(android.content.Intent); method public abstract int onCountPermissionApps(@NonNull java.util.List<java.lang.String>, boolean, boolean); method public abstract int onCountPermissionApps(@NonNull java.util.List<java.lang.String>, int); method @NonNull public abstract java.util.List<android.permission.RuntimePermissionPresentationInfo> onGetAppPermissions(@NonNull String); method @NonNull public abstract java.util.List<android.permission.RuntimePermissionUsageInfo> onGetPermissionUsages(boolean, long); method public abstract void onGetRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.OutputStream); Loading
api/test-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -1694,6 +1694,8 @@ package android.permission { public final class PermissionControllerManager { method @RequiresPermission("android.permission.REVOKE_RUNTIME_PERMISSIONS") public void revokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull java.util.concurrent.Executor, @NonNull android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback); field public static final int COUNT_ONLY_WHEN_GRANTED = 1; // 0x1 field public static final int COUNT_WHEN_SYSTEM = 2; // 0x2 field public static final int REASON_INSTALLER_POLICY_VIOLATION = 2; // 0x2 field public static final int REASON_MALWARE = 1; // 0x1 } Loading
core/java/android/permission/IPermissionController.aidl +2 −2 Original line number Diff line number Diff line Loading @@ -32,8 +32,8 @@ oneway interface IPermissionController { void getRuntimePermissionBackup(in UserHandle user, in ParcelFileDescriptor pipe); void getAppPermissions(String packageName, in RemoteCallback callback); void revokeRuntimePermission(String packageName, String permissionName); void countPermissionApps(in List<String> permissionNames, boolean countOnlyGranted, boolean countSystem, in RemoteCallback callback); void countPermissionApps(in List<String> permissionNames, int flags, in RemoteCallback callback); void getPermissionUsages(boolean countSystem, long numMillis, in RemoteCallback callback); void isApplicationQualifiedForRole(String roleName, String packageName, in RemoteCallback callback); Loading
core/java/android/permission/PermissionControllerManager.java +26 −13 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.permission.PermissionControllerService.SERVICE_INTERFACE; import static com.android.internal.util.Preconditions.checkArgumentNonnegative; import static com.android.internal.util.Preconditions.checkCollectionElementsNotNull; import static com.android.internal.util.Preconditions.checkFlagsArgument; import static com.android.internal.util.Preconditions.checkNotNull; import static com.android.internal.util.Preconditions.checkStringNotEmpty; Loading Loading @@ -113,6 +114,20 @@ public final class PermissionControllerManager { */ public static final int REASON_INSTALLER_POLICY_VIOLATION = 2; /** @hide */ @IntDef(prefix = { "COUNT_" }, value = { COUNT_ONLY_WHEN_GRANTED, COUNT_WHEN_SYSTEM, }, flag = true) @Retention(RetentionPolicy.SOURCE) public @interface CountPermissionAppsFlag {} /** Count an app only if the permission is granted to the app. */ public static final int COUNT_ONLY_WHEN_GRANTED = 1; /** Count and app even if it is a system app. */ public static final int COUNT_WHEN_SYSTEM = 2; /** * Callback for delivering the result of {@link #revokeRuntimePermissions}. */ Loading Loading @@ -162,7 +177,7 @@ public final class PermissionControllerManager { */ public interface OnCountPermissionAppsResultCallback { /** * The result for {@link #countPermissionApps(List, boolean, boolean, * The result for {@link #countPermissionApps(List, int, * OnCountPermissionAppsResultCallback, Handler)}. * * @param numApps The number of apps that have one of the permissions Loading Loading @@ -302,8 +317,8 @@ public final class PermissionControllerManager { * Count how many apps have one of a set of permissions. * * @param permissionNames The permissions the app might have * @param countOnlyGranted Count an app only if the permission is granted to the app * @param countSystem Also count system apps * @param flags Modify which apps to count. By default all non-system apps that request a * permission are counted * @param callback Callback to receive the result * @param handler Handler on which to invoke the callback * Loading @@ -311,13 +326,14 @@ public final class PermissionControllerManager { */ @RequiresPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS) public void countPermissionApps(@NonNull List<String> permissionNames, boolean countOnlyGranted, boolean countSystem, @CountPermissionAppsFlag int flags, @NonNull OnCountPermissionAppsResultCallback callback, @Nullable Handler handler) { checkCollectionElementsNotNull(permissionNames, "permissionNames"); checkFlagsArgument(flags, COUNT_WHEN_SYSTEM | COUNT_ONLY_WHEN_GRANTED); checkNotNull(callback); sRemoteService.scheduleRequest(new PendingCountPermissionAppsRequest(sRemoteService, permissionNames, countOnlyGranted, countSystem, callback, permissionNames, flags, callback, handler == null ? sRemoteService.getHandler() : handler)); } Loading Loading @@ -731,20 +747,17 @@ public final class PermissionControllerManager { AbstractRemoteService.PendingRequest<RemoteService, IPermissionController> { private final @NonNull List<String> mPermissionNames; private final @NonNull OnCountPermissionAppsResultCallback mCallback; private final boolean mCountOnlyGranted; private final boolean mCountSystem; private final @CountPermissionAppsFlag int mFlags; private final @NonNull RemoteCallback mRemoteCallback; private PendingCountPermissionAppsRequest(@NonNull RemoteService service, @NonNull List<String> permissionNames, boolean countOnlyGranted, boolean countSystem, @NonNull OnCountPermissionAppsResultCallback callback, @NonNull Handler handler) { @NonNull List<String> permissionNames, @CountPermissionAppsFlag int flags, @NonNull OnCountPermissionAppsResultCallback callback, @NonNull Handler handler) { super(service); mPermissionNames = permissionNames; mCountOnlyGranted = countOnlyGranted; mCountSystem = countSystem; mFlags = flags; mCallback = callback; mRemoteCallback = new RemoteCallback(result -> { Loading @@ -770,7 +783,7 @@ public final class PermissionControllerManager { public void run() { try { getService().getServiceInterface().countPermissionApps(mPermissionNames, mCountOnlyGranted, mCountSystem, mRemoteCallback); mFlags, mRemoteCallback); } catch (RemoteException e) { Log.e(TAG, "Error counting permission apps", e); } Loading
core/java/android/permission/PermissionControllerService.java +15 −9 Original line number Diff line number Diff line Loading @@ -16,9 +16,13 @@ package android.permission; import static android.permission.PermissionControllerManager.COUNT_ONLY_WHEN_GRANTED; import static android.permission.PermissionControllerManager.COUNT_WHEN_SYSTEM; import static com.android.internal.util.Preconditions.checkArgument; import static com.android.internal.util.Preconditions.checkArgumentNonnegative; import static com.android.internal.util.Preconditions.checkCollectionElementsNotNull; import static com.android.internal.util.Preconditions.checkFlagsArgument; import static com.android.internal.util.Preconditions.checkNotNull; import static com.android.internal.util.Preconditions.checkStringNotEmpty; import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage; Loading @@ -37,6 +41,7 @@ import android.os.IBinder; import android.os.ParcelFileDescriptor; import android.os.RemoteCallback; import android.os.UserHandle; import android.permission.PermissionControllerManager.CountPermissionAppsFlag; import android.util.ArrayMap; import android.util.Log; Loading Loading @@ -121,13 +126,13 @@ public abstract class PermissionControllerService extends Service { * Count how many apps have one of a set of permissions. * * @param permissionNames The permissions the app might have * @param countOnlyGranted Count an app only if the permission is granted to the app * @param countSystem Also count system apps * @param flags Modify which apps to count. By default all non-system apps that request a * permission are counted * * @return the number of apps that have one of the permissions */ public abstract int onCountPermissionApps(@NonNull List<String> permissionNames, boolean countOnlyGranted, boolean countSystem); @CountPermissionAppsFlag int flags); /** * Count how many apps have used permissions. Loading Loading @@ -226,17 +231,18 @@ public abstract class PermissionControllerService extends Service { } @Override public void countPermissionApps(List<String> permissionNames, boolean countOnlyGranted, boolean countSystem, RemoteCallback callback) { public void countPermissionApps(List<String> permissionNames, int flags, RemoteCallback callback) { checkCollectionElementsNotNull(permissionNames, "permissionNames"); checkFlagsArgument(flags, COUNT_WHEN_SYSTEM | COUNT_ONLY_WHEN_GRANTED); checkNotNull(callback, "callback"); enforceCallingPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS, null); mHandler.sendMessage( obtainMessage(PermissionControllerService::countPermissionApps, PermissionControllerService.this, permissionNames, countOnlyGranted, countSystem, callback)); PermissionControllerService.this, permissionNames, flags, callback)); } @Override Loading Loading @@ -311,8 +317,8 @@ public abstract class PermissionControllerService extends Service { } private void countPermissionApps(@NonNull List<String> permissionNames, boolean countOnlyGranted, boolean countSystem, @NonNull RemoteCallback callback) { int numApps = onCountPermissionApps(permissionNames, countOnlyGranted, countSystem); @CountPermissionAppsFlag int flags, @NonNull RemoteCallback callback) { int numApps = onCountPermissionApps(permissionNames, flags); Bundle result = new Bundle(); result.putInt(PermissionControllerManager.KEY_RESULT, numApps); Loading