Merge "Add DevicePolicyManager#getPolicyManagedProfiles system api" into tm-dev

This commit is contained in:
Antoan Angelov
2022-03-20 20:08:50 +00:00
committed by Android (Google) Code Review
5 changed files with 50 additions and 0 deletions

View File

@@ -1090,6 +1090,7 @@ package android.app.admin {
method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.UserHandle getDeviceOwnerUser();
method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.QUERY_ADMIN_POLICY}) public java.util.List<java.lang.String> getPermittedAccessibilityServices(int);
method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.QUERY_ADMIN_POLICY}) public java.util.List<java.lang.String> getPermittedInputMethodsForCurrentUser();
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public java.util.List<android.os.UserHandle> getPolicyManagedProfiles(@NonNull android.os.UserHandle);
method @Nullable public android.content.ComponentName getProfileOwner() throws java.lang.IllegalArgumentException;
method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS}) public String getProfileOwnerNameAsUser(int) throws java.lang.IllegalArgumentException;
method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS}) public int getUserProvisioningState();

View File

@@ -15378,6 +15378,29 @@ public class DevicePolicyManager {
return devicePolicyManagementUpdaterConfig;
}
/**
* Returns a {@link List} of managed profiles managed by some profile owner within the profile
* group of the given user, or an empty {@link List} if there is not one.
*
* @param user the user whose profile group to look within to return managed profiles
*
* @hide
*/
@SystemApi
@RequiresPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)
@NonNull
public List<UserHandle> getPolicyManagedProfiles(@NonNull UserHandle user) {
Objects.requireNonNull(user);
if (mService != null) {
try {
return mService.getPolicyManagedProfiles(user);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
return Collections.emptyList();
}
/**
* Retrieves the package name for a given {@code deviceManagerConfig}.
*

View File

@@ -563,4 +563,6 @@ interface IDevicePolicyManager {
ParcelableResource getString(String stringId);
boolean shouldAllowBypassingDevicePolicyManagementRoleQualification();
List<UserHandle> getPolicyManagedProfiles(in UserHandle userHandle);
}

View File

@@ -31,6 +31,7 @@ import android.util.Slog;
import com.android.server.SystemService;
import java.util.Collections;
import java.util.List;
/**
@@ -200,4 +201,9 @@ abstract class BaseIDevicePolicyManager extends IDevicePolicyManager.Stub {
public boolean shouldAllowBypassingDevicePolicyManagementRoleQualification() {
return false;
}
@Override
public List<UserHandle> getPolicyManagedProfiles(UserHandle userHandle) {
return Collections.emptyList();
}
}

View File

@@ -18837,4 +18837,22 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
return accounts.length == 0;
});
}
@Override
public List<UserHandle> getPolicyManagedProfiles(@NonNull UserHandle user) {
Preconditions.checkCallAuthorization(hasCallingOrSelfPermission(
android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS));
int userId = user.getIdentifier();
return mInjector.binderWithCleanCallingIdentity(() -> {
List<UserInfo> userProfiles = mUserManager.getProfiles(userId);
List<UserHandle> result = new ArrayList<>();
for (int i = 0; i < userProfiles.size(); i++) {
if (userProfiles.get(i).isManagedProfile() && hasProfileOwner(userId)) {
result.add(new UserHandle(userProfiles.get(i).id));
}
}
return result;
});
}
}