Update Action Not Allowed Dialog text for a financed device
Bug: 173826319 Bug: 158157476 Test: Used a test device that is registered via ZT Test: m RunSettingsRoboTests ROBOTEST_FILTER=ActionDisabledByAdminDialogHelperTest Change-Id: Iefeb0b653764952e409dfd862d9cc54c4f5e7fc9
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.settings.enterprise;
|
||||
|
||||
import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.UserIdInt;
|
||||
import android.app.Activity;
|
||||
@@ -119,24 +121,11 @@ public class ActionDisabledByAdminDialogHelper {
|
||||
if (admin == null) {
|
||||
return;
|
||||
}
|
||||
ImageView supportIconView = root.requireViewById(R.id.admin_support_icon);
|
||||
if (!RestrictedLockUtilsInternal.isAdminInCurrentUserOrProfile(mActivity, admin)
|
||||
|| !RestrictedLockUtils.isCurrentUserOrProfile(mActivity, userId)) {
|
||||
|
||||
setAdminSupportIcon(root, admin, userId);
|
||||
|
||||
if (isNotCurrentUserOrProfile(admin, userId)) {
|
||||
admin = null;
|
||||
|
||||
supportIconView.setImageDrawable(
|
||||
mActivity.getDrawable(com.android.internal.R.drawable.ic_info));
|
||||
|
||||
TypedArray ta = mActivity.obtainStyledAttributes(new int[]{android.R.attr.colorAccent});
|
||||
supportIconView.setImageTintList(ColorStateList.valueOf(ta.getColor(0, 0)));
|
||||
ta.recycle();
|
||||
} else {
|
||||
final Drawable badgedIcon = Utils.getBadgedIcon(
|
||||
IconDrawableFactory.newInstance(mActivity),
|
||||
mActivity.getPackageManager(),
|
||||
admin.getPackageName(),
|
||||
userId);
|
||||
supportIconView.setImageDrawable(badgedIcon);
|
||||
}
|
||||
|
||||
setAdminSupportTitle(root, restriction);
|
||||
@@ -151,12 +140,44 @@ public class ActionDisabledByAdminDialogHelper {
|
||||
setAdminSupportDetails(mActivity, root, new EnforcedAdmin(admin, user));
|
||||
}
|
||||
|
||||
private boolean isNotCurrentUserOrProfile(ComponentName admin, int userId) {
|
||||
return !isFinancedDevice()
|
||||
&& (!RestrictedLockUtilsInternal.isAdminInCurrentUserOrProfile(mActivity, admin)
|
||||
|| !RestrictedLockUtils.isCurrentUserOrProfile(mActivity, userId));
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void setAdminSupportIcon(View root, ComponentName admin, int userId) {
|
||||
ImageView supportIconView = root.requireViewById(R.id.admin_support_icon);
|
||||
if (isFinancedDevice()) {
|
||||
supportIconView.setVisibility(View.GONE);
|
||||
} else if (isNotCurrentUserOrProfile(admin, userId)) {
|
||||
supportIconView.setImageDrawable(
|
||||
mActivity.getDrawable(com.android.internal.R.drawable.ic_info));
|
||||
|
||||
TypedArray ta = mActivity.obtainStyledAttributes(new int[]{android.R.attr.colorAccent});
|
||||
supportIconView.setImageTintList(ColorStateList.valueOf(ta.getColor(0, 0)));
|
||||
ta.recycle();
|
||||
} else {
|
||||
final Drawable badgedIcon = Utils.getBadgedIcon(
|
||||
IconDrawableFactory.newInstance(mActivity),
|
||||
mActivity.getPackageManager(),
|
||||
admin.getPackageName(),
|
||||
userId);
|
||||
supportIconView.setImageDrawable(badgedIcon);
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void setAdminSupportTitle(View root, String restriction) {
|
||||
final TextView titleView = root.findViewById(R.id.admin_support_dialog_title);
|
||||
if (titleView == null) {
|
||||
return;
|
||||
}
|
||||
if (isFinancedDevice()) {
|
||||
titleView.setText(R.string.disabled_by_policy_title_financed_device);
|
||||
return;
|
||||
}
|
||||
if (restriction == null) {
|
||||
titleView.setText(R.string.disabled_by_policy_title);
|
||||
return;
|
||||
@@ -195,6 +216,7 @@ public class ActionDisabledByAdminDialogHelper {
|
||||
|
||||
final DevicePolicyManager dpm = (DevicePolicyManager) activity.getSystemService(
|
||||
Context.DEVICE_POLICY_SERVICE);
|
||||
CharSequence supportMessage = null;
|
||||
if (!RestrictedLockUtilsInternal.isAdminInCurrentUserOrProfile(activity,
|
||||
enforcedAdmin.component) || !RestrictedLockUtils.isCurrentUserOrProfile(
|
||||
activity, getEnforcementAdminUserId(enforcedAdmin))) {
|
||||
@@ -203,15 +225,16 @@ public class ActionDisabledByAdminDialogHelper {
|
||||
if (enforcedAdmin.user == null) {
|
||||
enforcedAdmin.user = UserHandle.of(UserHandle.myUserId());
|
||||
}
|
||||
CharSequence supportMessage = null;
|
||||
if (UserHandle.isSameApp(Process.myUid(), Process.SYSTEM_UID)) {
|
||||
supportMessage = dpm.getShortSupportMessageForUser(enforcedAdmin.component,
|
||||
getEnforcementAdminUserId(enforcedAdmin));
|
||||
}
|
||||
if (supportMessage != null) {
|
||||
final TextView textView = root.findViewById(R.id.admin_support_msg);
|
||||
textView.setText(supportMessage);
|
||||
}
|
||||
}
|
||||
final TextView textView = root.findViewById(R.id.admin_support_msg);
|
||||
if (supportMessage != null) {
|
||||
textView.setText(supportMessage);
|
||||
} else if (!isFinancedDevice()) {
|
||||
textView.setText(R.string.default_admin_support_msg);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,4 +256,10 @@ public class ActionDisabledByAdminDialogHelper {
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isFinancedDevice() {
|
||||
final DevicePolicyManager dpm = mActivity.getSystemService(DevicePolicyManager.class);
|
||||
return dpm.isDeviceManaged() && dpm.getDeviceOwnerType(
|
||||
dpm.getDeviceOwnerComponentOnAnyUser()) == DEVICE_OWNER_TYPE_FINANCED;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user