Merge "Add Api to get permission group info from PermissionController" into sc-dev
This commit is contained in:
@@ -8766,6 +8766,8 @@ package android.permission {
|
|||||||
|
|
||||||
public final class PermissionControllerManager {
|
public final class PermissionControllerManager {
|
||||||
method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.RESTORE_RUNTIME_PERMISSIONS}) public void applyStagedRuntimePermissionBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
|
method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.RESTORE_RUNTIME_PERMISSIONS}) public void applyStagedRuntimePermissionBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
|
||||||
|
method @Nullable public String getGroupOfPlatformPermission(@NonNull String);
|
||||||
|
method @NonNull public java.util.Set<java.lang.String> getPlatformPermissionsForGroup(@NonNull String);
|
||||||
method @RequiresPermission(android.Manifest.permission.GET_RUNTIME_PERMISSIONS) public void getRuntimePermissionBackup(@NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<byte[]>);
|
method @RequiresPermission(android.Manifest.permission.GET_RUNTIME_PERMISSIONS) public void getRuntimePermissionBackup(@NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<byte[]>);
|
||||||
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);
|
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);
|
||||||
method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.RESTORE_RUNTIME_PERMISSIONS}) public void stageAndApplyRuntimePermissionsBackup(@NonNull byte[], @NonNull android.os.UserHandle);
|
method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.RESTORE_RUNTIME_PERMISSIONS}) public void stageAndApplyRuntimePermissionsBackup(@NonNull byte[], @NonNull android.os.UserHandle);
|
||||||
@@ -8787,7 +8789,9 @@ package android.permission {
|
|||||||
method @NonNull public final android.os.IBinder onBind(android.content.Intent);
|
method @NonNull public final android.os.IBinder onBind(android.content.Intent);
|
||||||
method @BinderThread public abstract void onCountPermissionApps(@NonNull java.util.List<java.lang.String>, int, @NonNull java.util.function.IntConsumer);
|
method @BinderThread public abstract void onCountPermissionApps(@NonNull java.util.List<java.lang.String>, int, @NonNull java.util.function.IntConsumer);
|
||||||
method @BinderThread public abstract void onGetAppPermissions(@NonNull String, @NonNull java.util.function.Consumer<java.util.List<android.permission.RuntimePermissionPresentationInfo>>);
|
method @BinderThread public abstract void onGetAppPermissions(@NonNull String, @NonNull java.util.function.Consumer<java.util.List<android.permission.RuntimePermissionPresentationInfo>>);
|
||||||
|
method @BinderThread public void onGetGroupOfPlatformPermission(@NonNull String, @NonNull java.util.function.Consumer<java.lang.String>);
|
||||||
method @BinderThread public abstract void onGetPermissionUsages(boolean, long, @NonNull java.util.function.Consumer<java.util.List<android.permission.RuntimePermissionUsageInfo>>);
|
method @BinderThread public abstract void onGetPermissionUsages(boolean, long, @NonNull java.util.function.Consumer<java.util.List<android.permission.RuntimePermissionUsageInfo>>);
|
||||||
|
method @BinderThread public void onGetPlatformPermissionsForGroup(@NonNull String, @NonNull java.util.function.Consumer<java.util.List<java.lang.String>>);
|
||||||
method @BinderThread public abstract void onGetRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.OutputStream, @NonNull Runnable);
|
method @BinderThread public abstract void onGetRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.OutputStream, @NonNull Runnable);
|
||||||
method @BinderThread public abstract void onGrantOrUpgradeDefaultRuntimePermissions(@NonNull Runnable);
|
method @BinderThread public abstract void onGrantOrUpgradeDefaultRuntimePermissions(@NonNull Runnable);
|
||||||
method @BinderThread public void onOneTimePermissionSessionTimeout(@NonNull String);
|
method @BinderThread public void onOneTimePermissionSessionTimeout(@NonNull String);
|
||||||
|
|||||||
@@ -48,4 +48,10 @@ oneway interface IPermissionController {
|
|||||||
void getPrivilegesDescriptionStringForProfile(
|
void getPrivilegesDescriptionStringForProfile(
|
||||||
in String deviceProfileName,
|
in String deviceProfileName,
|
||||||
in AndroidFuture<String> callback);
|
in AndroidFuture<String> callback);
|
||||||
|
void getPlatformPermissionsForGroup(
|
||||||
|
in String permissionGroupName,
|
||||||
|
in AndroidFuture<List<String>> callback);
|
||||||
|
void getGroupOfPlatformPermission(
|
||||||
|
in String permissionName,
|
||||||
|
in AndroidFuture<String> callback);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ import android.os.Handler;
|
|||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
|
import android.util.ArraySet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
@@ -66,6 +67,7 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
@@ -720,4 +722,46 @@ public final class PermissionControllerManager {
|
|||||||
mRemoteService.run(
|
mRemoteService.run(
|
||||||
service -> service.notifyOneTimePermissionSessionTimeout(packageName));
|
service -> service.notifyOneTimePermissionSessionTimeout(packageName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the platform permissions which belong to a particular permission group
|
||||||
|
*
|
||||||
|
* @param permissionGroupName The permission group whose permissions are desired
|
||||||
|
* @return A list of the platform permissions in the group, or empty if the group is not a valid
|
||||||
|
* platform group.
|
||||||
|
*/
|
||||||
|
public @NonNull Set<String> getPlatformPermissionsForGroup(
|
||||||
|
@NonNull String permissionGroupName) {
|
||||||
|
try {
|
||||||
|
return new ArraySet<>(mRemoteService.postAsync(service -> {
|
||||||
|
AndroidFuture<List<String>> future = new AndroidFuture<>();
|
||||||
|
service.getPlatformPermissionsForGroup(permissionGroupName, future);
|
||||||
|
return future;
|
||||||
|
}).get(REQUEST_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS));
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.e(TAG, "Failed to get permissions of " + permissionGroupName, e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the platform group of a particular permission, if the permission is a platform permission
|
||||||
|
*
|
||||||
|
* @param permissionName The permission name whose group is desired
|
||||||
|
* @return The name of the permission group this permission belongs to, or null if it has no
|
||||||
|
* group, or is not a platform permission
|
||||||
|
*/
|
||||||
|
public @Nullable String getGroupOfPlatformPermission(
|
||||||
|
@NonNull String permissionName) {
|
||||||
|
try {
|
||||||
|
return mRemoteService.postAsync(service -> {
|
||||||
|
AndroidFuture<String> future = new AndroidFuture<>();
|
||||||
|
service.getGroupOfPlatformPermission(permissionName, future);
|
||||||
|
return future;
|
||||||
|
}).get(REQUEST_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.e(TAG, "Failed to get group of " + permissionName, e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -300,6 +300,29 @@ public abstract class PermissionControllerService extends Service {
|
|||||||
throw new AbstractMethodError("Must be overridden in implementing class");
|
throw new AbstractMethodError("Must be overridden in implementing class");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the platform permissions which belong to a particular permission group
|
||||||
|
*
|
||||||
|
* @param permissionGroupName The permission group whose permissions are desired
|
||||||
|
* @param callback A callback the permission names will be passed to
|
||||||
|
*/
|
||||||
|
@BinderThread
|
||||||
|
public void onGetPlatformPermissionsForGroup(@NonNull String permissionGroupName,
|
||||||
|
@NonNull Consumer<List<String>> callback) {
|
||||||
|
throw new AbstractMethodError("Must be overridden in implementing class");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the platform group of a particular permission, if the permission is a platform permission
|
||||||
|
*
|
||||||
|
* @param permissionName The permission name whose group is desired
|
||||||
|
* @param callback A callback the group name will be passed to
|
||||||
|
*/
|
||||||
|
@BinderThread
|
||||||
|
public void onGetGroupOfPlatformPermission(@NonNull String permissionName,
|
||||||
|
@NonNull Consumer<String> callback) {
|
||||||
|
throw new AbstractMethodError("Must be overridden in implementing class");
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Get a user-readable sentence, describing the set of privileges that are to be granted to a
|
* Get a user-readable sentence, describing the set of privileges that are to be granted to a
|
||||||
* companion app managing a device of the given profile.
|
* companion app managing a device of the given profile.
|
||||||
@@ -563,6 +586,36 @@ public abstract class PermissionControllerService extends Service {
|
|||||||
callback.completeExceptionally(t);
|
callback.completeExceptionally(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getPlatformPermissionsForGroup(
|
||||||
|
@NonNull String permissionName,
|
||||||
|
@NonNull AndroidFuture<List<String>> callback) {
|
||||||
|
try {
|
||||||
|
Objects.requireNonNull(permissionName);
|
||||||
|
Objects.requireNonNull(callback);
|
||||||
|
PermissionControllerService.this.onGetPlatformPermissionsForGroup(
|
||||||
|
permissionName, callback::complete);
|
||||||
|
} catch (Throwable t) {
|
||||||
|
callback.completeExceptionally(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getGroupOfPlatformPermission(
|
||||||
|
@NonNull String permissionGroupName,
|
||||||
|
@NonNull AndroidFuture<String> callback) {
|
||||||
|
try {
|
||||||
|
Objects.requireNonNull(permissionGroupName);
|
||||||
|
Objects.requireNonNull(callback);
|
||||||
|
PermissionControllerService
|
||||||
|
.this
|
||||||
|
.onGetGroupOfPlatformPermission(
|
||||||
|
permissionGroupName, callback::complete);
|
||||||
|
} catch (Throwable t) {
|
||||||
|
callback.completeExceptionally(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user