Add policy transparency dialog to 'Remove work profile'
* For a work profile on an organization-owned device, no explanation was being shown to the user as to why the work profile cannot be removed. * This CL adds a policy transparency dialog when the 'Remove work profile' option is selected in the 'Device Admin' Settings screen. Bug: 149391073 Test: Manual testing atest com.android.settings.applications.specialaccess.deviceadmin.DeviceAdminAddTest Change-Id: I8221973ed16fcc7c79f5897c3bea063050ae00a6
This commit is contained in:
@@ -457,12 +457,20 @@ public class DeviceAdminAdd extends Activity {
|
|||||||
private void showPolicyTransparencyDialogIfRequired() {
|
private void showPolicyTransparencyDialogIfRequired() {
|
||||||
if (isManagedProfile(mDeviceAdmin)
|
if (isManagedProfile(mDeviceAdmin)
|
||||||
&& mDeviceAdmin.getComponent().equals(mDPM.getProfileOwner())) {
|
&& mDeviceAdmin.getComponent().equals(mDPM.getProfileOwner())) {
|
||||||
|
EnforcedAdmin enforcedAdmin;
|
||||||
|
ComponentName adminComponent = mDPM.getProfileOwnerAsUser(getUserId());
|
||||||
|
if (adminComponent != null && mDPM.isOrganizationOwnedDeviceWithManagedProfile()) {
|
||||||
|
enforcedAdmin = new EnforcedAdmin(adminComponent,
|
||||||
|
UserManager.DISALLOW_REMOVE_MANAGED_PROFILE, UserHandle.of(getUserId()));
|
||||||
|
} else {
|
||||||
|
// Todo (b/151061366): Investigate this case to check if it is still viable.
|
||||||
if (hasBaseCantRemoveProfileRestriction()) {
|
if (hasBaseCantRemoveProfileRestriction()) {
|
||||||
// If DISALLOW_REMOVE_MANAGED_PROFILE is set by the system, there's no
|
// If DISALLOW_REMOVE_MANAGED_PROFILE is set by the system, there's no
|
||||||
// point showing a dialog saying it's disabled by an admin.
|
// point showing a dialog saying it's disabled by an admin.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
EnforcedAdmin enforcedAdmin = getAdminEnforcingCantRemoveProfile();
|
enforcedAdmin = getAdminEnforcingCantRemoveProfile();
|
||||||
|
}
|
||||||
if (enforcedAdmin != null) {
|
if (enforcedAdmin != null) {
|
||||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
|
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
|
||||||
DeviceAdminAdd.this,
|
DeviceAdminAdd.this,
|
||||||
@@ -640,7 +648,8 @@ public class DeviceAdminAdd extends Activity {
|
|||||||
|
|
||||||
final EnforcedAdmin admin = getAdminEnforcingCantRemoveProfile();
|
final EnforcedAdmin admin = getAdminEnforcingCantRemoveProfile();
|
||||||
final boolean hasBaseRestriction = hasBaseCantRemoveProfileRestriction();
|
final boolean hasBaseRestriction = hasBaseCantRemoveProfileRestriction();
|
||||||
if (admin != null && !hasBaseRestriction) {
|
if ((hasBaseRestriction && mDPM.isOrganizationOwnedDeviceWithManagedProfile())
|
||||||
|
|| (admin != null && !hasBaseRestriction)) {
|
||||||
findViewById(R.id.restricted_icon).setVisibility(View.VISIBLE);
|
findViewById(R.id.restricted_icon).setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
mActionButton.setEnabled(admin == null && !hasBaseRestriction);
|
mActionButton.setEnabled(admin == null && !hasBaseRestriction);
|
||||||
|
Reference in New Issue
Block a user