Add method to give a permission revoke a reason

Test: Compile
Bug: 149861310
Change-Id: I865a300a9795550a2549f928f4e967b2b695439e
This commit is contained in:
Evan Severson
2020-02-19 13:45:49 -08:00
parent 9fc16485f1
commit 43b2a199ab
4 changed files with 38 additions and 0 deletions

View File

@@ -2196,6 +2196,7 @@ package android.content.pm {
method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void removeOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener);
method public void replacePreferredActivity(@NonNull android.content.IntentFilter, int, @NonNull java.util.List<android.content.ComponentName>, @NonNull android.content.ComponentName);
method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public abstract void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle, @NonNull String);
method public void sendDeviceCustomizationReadyBroadcast();
method @RequiresPermission(allOf={android.Manifest.permission.SET_PREFERRED_APPLICATIONS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public abstract boolean setDefaultBrowserPackageNameAsUser(@Nullable String, int);
method @NonNull @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setDistractingPackageRestrictions(@NonNull String[], int);

View File

@@ -910,6 +910,7 @@ package android.content.pm {
method @RequiresPermission("android.permission.GRANT_RUNTIME_PERMISSIONS") public abstract void grantRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void removeOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener);
method @RequiresPermission("android.permission.REVOKE_RUNTIME_PERMISSIONS") public abstract void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
method @RequiresPermission("android.permission.REVOKE_RUNTIME_PERMISSIONS") public void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle, @NonNull String);
method @RequiresPermission(anyOf={"android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.REVOKE_RUNTIME_PERMISSIONS"}) public abstract void updatePermissionFlags(@NonNull String, @NonNull String, int, int, @NonNull android.os.UserHandle);
field public static final String FEATURE_ADOPTABLE_STORAGE = "android.software.adoptable_storage";
field public static final String FEATURE_FILE_BASED_ENCRYPTION = "android.software.file_based_encryption";

View File

@@ -776,6 +776,12 @@ public class ApplicationPackageManager extends PackageManager {
}
}
@Override
public void revokeRuntimePermission(String packageName, String permName, UserHandle user,
String reason) {
// TODO evanseverson: impl
}
@Override
public int getPermissionFlags(String permName, String packageName, UserHandle user) {
try {

View File

@@ -4331,6 +4331,36 @@ public abstract class PackageManager {
public abstract void revokeRuntimePermission(@NonNull String packageName,
@NonNull String permName, @NonNull UserHandle user);
/**
* Revoke a runtime permission that was previously granted by {@link
* #grantRuntimePermission(String, String, android.os.UserHandle)}. The
* permission must have been requested by and granted to the application.
* If the application is not allowed to hold the permission, a {@link
* java.lang.SecurityException} is thrown. If the package or permission is
* invalid, a {@link java.lang.IllegalArgumentException} is thrown.
* <p>
* <strong>Note: </strong>Using this API requires holding
* android.permission.REVOKE_RUNTIME_PERMISSIONS and if the user id is
* not the current user android.permission.INTERACT_ACROSS_USERS_FULL.
* </p>
*
* @param packageName The package from which to revoke the permission.
* @param permName The permission name to revoke.
* @param user The user for which to revoke the permission.
* @param reason The reason for the revoke.
*
* @see #grantRuntimePermission(String, String, android.os.UserHandle)
*
* @hide
*/
@TestApi
@SystemApi
@RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS)
public void revokeRuntimePermission(@NonNull String packageName,
@NonNull String permName, @NonNull UserHandle user, @NonNull String reason) {
revokeRuntimePermission(packageName, permName, user);
}
/**
* Gets the state flags associated with a permission.
*