Allow Device Management Role Holder to update Settings strings.
Test: manual Bug: 188414370 Change-Id: I6e1a06619799a9e99382d791e72e2e4518f93cac
This commit is contained in:
@@ -22,6 +22,8 @@ import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_HIGH;
|
||||
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_LOW;
|
||||
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_MEDIUM;
|
||||
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_NONE;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_IT_ADMIN_CANT_RESET_SCREEN_LOCK;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SCREEN_LOCK_SETUP_MESSAGE;
|
||||
|
||||
import static com.android.settings.password.ChooseLockPassword.ChooseLockPasswordFragment.RESULT_FINISHED;
|
||||
import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_CALLER_APP_NAME;
|
||||
@@ -29,7 +31,6 @@ import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_D
|
||||
import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_IS_CALLING_APP_ADMIN;
|
||||
import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_REQUESTED_MIN_COMPLEXITY;
|
||||
|
||||
import android.accessibilityservice.AccessibilityServiceInfo;
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
@@ -394,13 +395,16 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
}
|
||||
} else {
|
||||
if (mIsManagedProfile) {
|
||||
textView.setText(R.string.lock_settings_picker_profile_message);
|
||||
textView.setText(mDpm.getString(WORK_PROFILE_SCREEN_LOCK_SETUP_MESSAGE,
|
||||
() -> getString(R.string.lock_settings_picker_profile_message)));
|
||||
} else {
|
||||
int profileUserId = Utils.getManagedProfileId(mUserManager, mUserId);
|
||||
if (mController.isScreenLockRestrictedByAdmin()
|
||||
&& profileUserId != UserHandle.USER_NULL) {
|
||||
final StringBuilder description = new StringBuilder(getText(
|
||||
R.string.lock_settings_picker_admin_restricted_personal_message));
|
||||
final StringBuilder description = new StringBuilder(
|
||||
mDpm.getString(WORK_PROFILE_IT_ADMIN_CANT_RESET_SCREEN_LOCK, () ->
|
||||
getString(
|
||||
R.string.lock_settings_picker_admin_restricted_personal_message)));
|
||||
final LinkifyUtils.OnClickListener clickListener = () -> {
|
||||
final Bundle extras = new Bundle();
|
||||
extras.putInt(Intent.EXTRA_USER_ID, profileUserId);
|
||||
|
@@ -18,6 +18,13 @@ package com.android.settings.password;
|
||||
|
||||
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_NONE;
|
||||
import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.UNDEFINED;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.PASSWORD_RECENTLY_USED;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.PIN_RECENTLY_USED;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.REENTER_WORK_PROFILE_PASSWORD_HEADER;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.REENTER_WORK_PROFILE_PIN_HEADER;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_WORK_PROFILE_PASSWORD_HEADER;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_WORK_PROFILE_PIN_HEADER;
|
||||
|
||||
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE;
|
||||
import static com.android.internal.widget.PasswordValidationError.CONTAINS_INVALID_CHARACTERS;
|
||||
@@ -259,11 +266,13 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
|
||||
Introduction(
|
||||
R.string.lockpassword_choose_your_password_header, // password
|
||||
SET_WORK_PROFILE_PASSWORD_HEADER,
|
||||
R.string.lockpassword_choose_your_profile_password_header,
|
||||
R.string.lockpassword_choose_your_password_header_for_fingerprint,
|
||||
R.string.lockpassword_choose_your_password_header_for_face,
|
||||
R.string.lockpassword_choose_your_password_header_for_biometrics,
|
||||
R.string.lockpassword_choose_your_pin_header, // pin
|
||||
SET_WORK_PROFILE_PIN_HEADER,
|
||||
R.string.lockpassword_choose_your_profile_pin_header,
|
||||
R.string.lockpassword_choose_your_pin_header_for_fingerprint,
|
||||
R.string.lockpassword_choose_your_pin_header_for_face,
|
||||
@@ -274,11 +283,13 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
|
||||
NeedToConfirm(
|
||||
R.string.lockpassword_confirm_your_password_header,
|
||||
REENTER_WORK_PROFILE_PASSWORD_HEADER,
|
||||
R.string.lockpassword_reenter_your_profile_password_header,
|
||||
R.string.lockpassword_confirm_your_password_header,
|
||||
R.string.lockpassword_confirm_your_password_header,
|
||||
R.string.lockpassword_confirm_your_password_header,
|
||||
R.string.lockpassword_confirm_your_pin_header,
|
||||
REENTER_WORK_PROFILE_PIN_HEADER,
|
||||
R.string.lockpassword_reenter_your_profile_pin_header,
|
||||
R.string.lockpassword_confirm_your_pin_header,
|
||||
R.string.lockpassword_confirm_your_pin_header,
|
||||
@@ -289,11 +300,13 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
|
||||
ConfirmWrong(
|
||||
R.string.lockpassword_confirm_passwords_dont_match,
|
||||
UNDEFINED,
|
||||
R.string.lockpassword_confirm_passwords_dont_match,
|
||||
R.string.lockpassword_confirm_passwords_dont_match,
|
||||
R.string.lockpassword_confirm_passwords_dont_match,
|
||||
R.string.lockpassword_confirm_passwords_dont_match,
|
||||
R.string.lockpassword_confirm_pins_dont_match,
|
||||
UNDEFINED,
|
||||
R.string.lockpassword_confirm_pins_dont_match,
|
||||
R.string.lockpassword_confirm_pins_dont_match,
|
||||
R.string.lockpassword_confirm_pins_dont_match,
|
||||
@@ -303,11 +316,13 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
R.string.lockpassword_confirm_label);
|
||||
|
||||
Stage(int hintInAlpha,
|
||||
String hintOverrideInAlphaForProfile,
|
||||
int hintInAlphaForProfile,
|
||||
int hintInAlphaForFingerprint,
|
||||
int hintInAlphaForFace,
|
||||
int hintInAlphaForBiometrics,
|
||||
int hintInNumeric,
|
||||
String hintOverrideInNumericForProfile,
|
||||
int hintInNumericForProfile,
|
||||
int hintInNumericForFingerprint,
|
||||
int hintInNumericForFace,
|
||||
@@ -317,12 +332,14 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
int nextButtonText) {
|
||||
|
||||
this.alphaHint = hintInAlpha;
|
||||
this.alphaHintOverrideForProfile = hintOverrideInAlphaForProfile;
|
||||
this.alphaHintForProfile = hintInAlphaForProfile;
|
||||
this.alphaHintForFingerprint = hintInAlphaForFingerprint;
|
||||
this.alphaHintForFace = hintInAlphaForFace;
|
||||
this.alphaHintForBiometrics = hintInAlphaForBiometrics;
|
||||
|
||||
this.numericHint = hintInNumeric;
|
||||
this.numericHintOverrideForProfile = hintOverrideInNumericForProfile;
|
||||
this.numericHintForProfile = hintInNumericForProfile;
|
||||
this.numericHintForFingerprint = hintInNumericForFingerprint;
|
||||
this.numericHintForFace = hintInNumericForFace;
|
||||
@@ -341,6 +358,7 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
|
||||
// Password header
|
||||
public final int alphaHint;
|
||||
public final String alphaHintOverrideForProfile;
|
||||
public final int alphaHintForProfile;
|
||||
public final int alphaHintForFingerprint;
|
||||
public final int alphaHintForFace;
|
||||
@@ -348,6 +366,7 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
|
||||
// PIN header
|
||||
public final int numericHint;
|
||||
public final String numericHintOverrideForProfile;
|
||||
public final int numericHintForProfile;
|
||||
public final int numericHintForFingerprint;
|
||||
public final int numericHintForFace;
|
||||
@@ -361,26 +380,34 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
|
||||
public final int buttonText;
|
||||
|
||||
public @StringRes int getHint(boolean isAlpha, int type, boolean isProfile) {
|
||||
public String getHint(Context context, boolean isAlpha, int type, boolean isProfile) {
|
||||
if (isAlpha) {
|
||||
if (type == TYPE_FINGERPRINT) {
|
||||
return alphaHintForFingerprint;
|
||||
return context.getString(alphaHintForFingerprint);
|
||||
} else if (type == TYPE_FACE) {
|
||||
return alphaHintForFace;
|
||||
return context.getString(alphaHintForFace);
|
||||
} else if (type == TYPE_BIOMETRIC) {
|
||||
return alphaHintForBiometrics;
|
||||
return context.getString(alphaHintForBiometrics);
|
||||
} else if (isProfile) {
|
||||
return context.getSystemService(DevicePolicyManager.class)
|
||||
.getString(alphaHintOverrideForProfile,
|
||||
() -> context.getString(alphaHintForProfile));
|
||||
} else {
|
||||
return isProfile ? alphaHintForProfile : alphaHint;
|
||||
return context.getString(alphaHint);
|
||||
}
|
||||
} else {
|
||||
if (type == TYPE_FINGERPRINT) {
|
||||
return numericHintForFingerprint;
|
||||
return context.getString(numericHintForFingerprint);
|
||||
} else if (type == TYPE_FACE) {
|
||||
return numericHintForFace;
|
||||
return context.getString(numericHintForFace);
|
||||
} else if (type == TYPE_BIOMETRIC) {
|
||||
return numericHintForBiometrics;
|
||||
return context.getString(numericHintForBiometrics);
|
||||
} else if (isProfile) {
|
||||
return context.getSystemService(DevicePolicyManager.class)
|
||||
.getString(numericHintOverrideForProfile,
|
||||
() -> context.getString(numericHintForProfile));
|
||||
} else {
|
||||
return isProfile ? numericHintForProfile : numericHint;
|
||||
return context.getString(numericHint);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -556,8 +583,8 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
|
||||
if (activity instanceof SettingsActivity) {
|
||||
final SettingsActivity sa = (SettingsActivity) activity;
|
||||
int title = Stage.Introduction.getHint(mIsAlphaMode, getStageType(),
|
||||
mIsManagedProfile);
|
||||
String title = Stage.Introduction.getHint(
|
||||
getContext(), mIsAlphaMode, getStageType(), mIsManagedProfile);
|
||||
sa.setTitle(title);
|
||||
mLayout.setHeaderText(title);
|
||||
}
|
||||
@@ -818,9 +845,17 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
messages.add(getString(R.string.lockpassword_pin_no_sequential_digits));
|
||||
break;
|
||||
case RECENTLY_USED:
|
||||
messages.add(getString(mIsAlphaMode
|
||||
? R.string.lockpassword_password_recently_used
|
||||
: R.string.lockpassword_pin_recently_used));
|
||||
DevicePolicyManager devicePolicyManager =
|
||||
getContext().getSystemService(DevicePolicyManager.class);
|
||||
if (mIsAlphaMode) {
|
||||
messages.add(devicePolicyManager.getString(
|
||||
PASSWORD_RECENTLY_USED,
|
||||
() -> getString(R.string.lockpassword_password_recently_used)));
|
||||
} else {
|
||||
messages.add(devicePolicyManager.getString(
|
||||
PIN_RECENTLY_USED,
|
||||
() -> getString(R.string.lockpassword_pin_recently_used)));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Log.wtf(TAG, "unknown error validating password: " + error);
|
||||
@@ -851,8 +886,8 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
} else {
|
||||
// Hide password requirement view when we are just asking user to confirm the pw.
|
||||
mPasswordRestrictionView.setVisibility(View.GONE);
|
||||
setHeaderText(getString(mUiStage.getHint(mIsAlphaMode, getStageType(),
|
||||
mIsManagedProfile)));
|
||||
setHeaderText(mUiStage.getHint(getContext(), mIsAlphaMode, getStageType(),
|
||||
mIsManagedProfile));
|
||||
setNextEnabled(canInput && length >= LockPatternUtils.MIN_LOCK_PASSWORD_SIZE);
|
||||
mSkipOrClearButton.setVisibility(toVisibility(canInput && length > 0));
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.password;
|
||||
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_WORK_PROFILE_PATTERN_HEADER;
|
||||
import static android.view.View.ACCESSIBILITY_LIVE_REGION_POLITE;
|
||||
|
||||
import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL;
|
||||
@@ -23,6 +24,7 @@ import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_U
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -474,15 +476,18 @@ public class ChooseLockPattern extends SettingsActivity {
|
||||
}
|
||||
|
||||
private void updateActivityTitle() {
|
||||
final int msg;
|
||||
final String msg;
|
||||
if (mForFingerprint) {
|
||||
msg = R.string.lockpassword_choose_your_pattern_header_for_fingerprint;
|
||||
msg = getString(R.string.lockpassword_choose_your_pattern_header_for_fingerprint);
|
||||
} else if (mForFace) {
|
||||
msg = R.string.lockpassword_choose_your_pattern_header_for_face;
|
||||
msg = getString(R.string.lockpassword_choose_your_pattern_header_for_face);
|
||||
} else if (mIsManagedProfile) {
|
||||
msg = getContext().getSystemService(DevicePolicyManager.class)
|
||||
.getString(SET_WORK_PROFILE_PATTERN_HEADER,
|
||||
() -> getString(
|
||||
R.string.lockpassword_choose_your_profile_pattern_header));
|
||||
} else {
|
||||
msg = mIsManagedProfile
|
||||
? R.string.lockpassword_choose_your_profile_pattern_header
|
||||
: R.string.lockpassword_choose_your_pattern_header;
|
||||
msg = getString(R.string.lockpassword_choose_your_pattern_header);
|
||||
}
|
||||
getActivity().setTitle(msg);
|
||||
}
|
||||
|
@@ -17,6 +17,13 @@
|
||||
|
||||
package com.android.settings.password;
|
||||
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PASSWORD_HEADER;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PATTERN_HEADER;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PIN_HEADER;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PASSWORD;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PATTERN;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PIN;
|
||||
|
||||
import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
|
||||
|
||||
import android.app.Activity;
|
||||
@@ -259,19 +266,36 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
|
||||
|
||||
private String getTitleFromCredentialType(@LockPatternUtils.CredentialType int credentialType,
|
||||
boolean isEffectiveUserManagedProfile) {
|
||||
int overrideStringId;
|
||||
int defaultStringId;
|
||||
switch (credentialType) {
|
||||
case LockPatternUtils.CREDENTIAL_TYPE_PIN:
|
||||
return isEffectiveUserManagedProfile
|
||||
? getString(R.string.lockpassword_confirm_your_work_pin_header)
|
||||
: getString(R.string.lockpassword_confirm_your_pin_header);
|
||||
|
||||
if (isEffectiveUserManagedProfile) {
|
||||
return mDevicePolicyManager.getString(
|
||||
CONFIRM_WORK_PROFILE_PIN_HEADER,
|
||||
() -> getString(R.string.lockpassword_confirm_your_work_pin_header));
|
||||
}
|
||||
|
||||
return getString(R.string.lockpassword_confirm_your_pin_header);
|
||||
case LockPatternUtils.CREDENTIAL_TYPE_PATTERN:
|
||||
return isEffectiveUserManagedProfile
|
||||
? getString(R.string.lockpassword_confirm_your_work_pattern_header)
|
||||
: getString(R.string.lockpassword_confirm_your_pattern_header);
|
||||
if (isEffectiveUserManagedProfile) {
|
||||
return mDevicePolicyManager.getString(
|
||||
CONFIRM_WORK_PROFILE_PATTERN_HEADER,
|
||||
() -> getString(
|
||||
R.string.lockpassword_confirm_your_work_pattern_header));
|
||||
}
|
||||
|
||||
return getString(R.string.lockpassword_confirm_your_pattern_header);
|
||||
case LockPatternUtils.CREDENTIAL_TYPE_PASSWORD:
|
||||
return isEffectiveUserManagedProfile
|
||||
? getString(R.string.lockpassword_confirm_your_work_password_header)
|
||||
: getString(R.string.lockpassword_confirm_your_password_header);
|
||||
if (isEffectiveUserManagedProfile) {
|
||||
return mDevicePolicyManager.getString(
|
||||
CONFIRM_WORK_PROFILE_PASSWORD_HEADER,
|
||||
() -> getString(
|
||||
R.string.lockpassword_confirm_your_work_password_header));
|
||||
}
|
||||
|
||||
return getString(R.string.lockpassword_confirm_your_password_header);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -280,17 +304,29 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
|
||||
boolean isEffectiveUserManagedProfile) {
|
||||
switch (credentialType) {
|
||||
case LockPatternUtils.CREDENTIAL_TYPE_PIN:
|
||||
return isEffectiveUserManagedProfile
|
||||
? getString(R.string.lockpassword_confirm_your_pin_generic_profile)
|
||||
: getString(R.string.lockpassword_confirm_your_pin_generic);
|
||||
if (isEffectiveUserManagedProfile) {
|
||||
return mDevicePolicyManager.getString(WORK_PROFILE_CONFIRM_PIN,
|
||||
() -> getString(
|
||||
R.string.lockpassword_confirm_your_pin_generic_profile));
|
||||
}
|
||||
|
||||
return getString(R.string.lockpassword_confirm_your_pin_generic);
|
||||
case LockPatternUtils.CREDENTIAL_TYPE_PATTERN:
|
||||
return isEffectiveUserManagedProfile
|
||||
? getString(R.string.lockpassword_confirm_your_pattern_generic_profile)
|
||||
: getString(R.string.lockpassword_confirm_your_pattern_generic);
|
||||
if (isEffectiveUserManagedProfile) {
|
||||
return mDevicePolicyManager.getString(WORK_PROFILE_CONFIRM_PATTERN,
|
||||
() -> getString(
|
||||
R.string.lockpassword_confirm_your_pattern_generic_profile));
|
||||
}
|
||||
|
||||
return getString(R.string.lockpassword_confirm_your_pattern_generic);
|
||||
case LockPatternUtils.CREDENTIAL_TYPE_PASSWORD:
|
||||
return isEffectiveUserManagedProfile
|
||||
? getString(R.string.lockpassword_confirm_your_password_generic_profile)
|
||||
: getString(R.string.lockpassword_confirm_your_password_generic);
|
||||
if (isEffectiveUserManagedProfile) {
|
||||
return mDevicePolicyManager.getString(WORK_PROFILE_CONFIRM_PASSWORD,
|
||||
() -> getString(
|
||||
R.string.lockpassword_confirm_your_password_generic_profile));
|
||||
}
|
||||
|
||||
return getString(R.string.lockpassword_confirm_your_password_generic);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@@ -17,6 +17,8 @@
|
||||
// TODO (b/35202196): move this class out of the root of the package.
|
||||
package com.android.settings.password;
|
||||
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LOCK_ATTEMPTS_FAILED;
|
||||
|
||||
import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
@@ -243,13 +245,16 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr
|
||||
// Last try
|
||||
final String title = getActivity().getString(
|
||||
R.string.lock_last_attempt_before_wipe_warning_title);
|
||||
final int messageId = getLastTryErrorMessage(userType);
|
||||
LastTryDialog.show(fragmentManager, title, messageId,
|
||||
final String overrideMessageId = getLastTryOverrideErrorMessageId(userType);
|
||||
final int defaultMessageId = getLastTryDefaultErrorMessage(userType);
|
||||
final String message = mDevicePolicyManager.getString(
|
||||
overrideMessageId, () -> getString(defaultMessageId));
|
||||
LastTryDialog.show(fragmentManager, title, message,
|
||||
android.R.string.ok, false /* dismiss */);
|
||||
} else {
|
||||
// Device, profile, or secondary user is wiped
|
||||
final int messageId = getWipeMessage(userType);
|
||||
LastTryDialog.show(fragmentManager, null /* title */, messageId,
|
||||
final String message = getWipeMessage(userType);
|
||||
LastTryDialog.show(fragmentManager, null /* title */, message,
|
||||
R.string.lock_failed_attempts_now_wiping_dialog_dismiss, true /* dismiss */);
|
||||
}
|
||||
}
|
||||
@@ -266,16 +271,18 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract int getLastTryErrorMessage(int userType);
|
||||
protected abstract String getLastTryOverrideErrorMessageId(int userType);
|
||||
protected abstract int getLastTryDefaultErrorMessage(int userType);
|
||||
|
||||
private int getWipeMessage(int userType) {
|
||||
private String getWipeMessage(int userType) {
|
||||
switch (userType) {
|
||||
case USER_TYPE_PRIMARY:
|
||||
return R.string.lock_failed_attempts_now_wiping_device;
|
||||
return getString(R.string.lock_failed_attempts_now_wiping_device);
|
||||
case USER_TYPE_MANAGED_PROFILE:
|
||||
return R.string.lock_failed_attempts_now_wiping_profile;
|
||||
return mDevicePolicyManager.getString(WORK_PROFILE_LOCK_ATTEMPTS_FAILED,
|
||||
() -> getString(R.string.lock_failed_attempts_now_wiping_profile));
|
||||
case USER_TYPE_SECONDARY:
|
||||
return R.string.lock_failed_attempts_now_wiping_user;
|
||||
return getString(R.string.lock_failed_attempts_now_wiping_user);
|
||||
default:
|
||||
throw new IllegalArgumentException("Unrecognized user type:" + userType);
|
||||
}
|
||||
@@ -311,7 +318,7 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr
|
||||
private static final String ARG_BUTTON = "button";
|
||||
private static final String ARG_DISMISS = "dismiss";
|
||||
|
||||
static boolean show(FragmentManager from, String title, int message, int button,
|
||||
static boolean show(FragmentManager from, String title, String message, int button,
|
||||
boolean dismiss) {
|
||||
LastTryDialog existent = (LastTryDialog) from.findFragmentByTag(TAG);
|
||||
if (existent != null && !existent.isRemoving()) {
|
||||
@@ -319,7 +326,7 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr
|
||||
}
|
||||
Bundle args = new Bundle();
|
||||
args.putString(ARG_TITLE, title);
|
||||
args.putInt(ARG_MESSAGE, message);
|
||||
args.putString(ARG_MESSAGE, message);
|
||||
args.putInt(ARG_BUTTON, button);
|
||||
args.putBoolean(ARG_DISMISS, dismiss);
|
||||
|
||||
@@ -349,7 +356,7 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
Dialog dialog = new AlertDialog.Builder(getActivity())
|
||||
.setTitle(getArguments().getString(ARG_TITLE))
|
||||
.setMessage(getArguments().getInt(ARG_MESSAGE))
|
||||
.setMessage(getArguments().getString(ARG_MESSAGE))
|
||||
.setPositiveButton(getArguments().getInt(ARG_BUTTON), null)
|
||||
.create();
|
||||
dialog.setCanceledOnTouchOutside(false);
|
||||
|
@@ -16,6 +16,16 @@
|
||||
|
||||
package com.android.settings.password;
|
||||
|
||||
import static android.app.admin.DevicePolicyResources.Strings.UNDEFINED;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PASSWORD_HEADER;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PIN_HEADER;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PASSWORD;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PIN;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LAST_PASSWORD_ATTEMPT_BEFORE_WIPE;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LAST_PIN_ATTEMPT_BEFORE_WIPE;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_PASSWORD_REQUIRED;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_PIN_REQUIRED;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.app.settings.SettingsEnums;
|
||||
@@ -73,6 +83,17 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
||||
R.string.lockpassword_strong_auth_required_work_password
|
||||
};
|
||||
|
||||
private static final String[] DETAIL_TEXT_OVERRIDES = new String[] {
|
||||
UNDEFINED,
|
||||
UNDEFINED,
|
||||
WORK_PROFILE_CONFIRM_PIN,
|
||||
WORK_PROFILE_CONFIRM_PASSWORD,
|
||||
UNDEFINED,
|
||||
UNDEFINED,
|
||||
WORK_PROFILE_PIN_REQUIRED,
|
||||
WORK_PROFILE_PASSWORD_REQUIRED
|
||||
};
|
||||
|
||||
public static class InternalActivity extends ConfirmLockPassword {
|
||||
}
|
||||
|
||||
@@ -160,10 +181,10 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
||||
headerMessage = mDevicePolicyManager.getOrganizationNameForUser(mUserId);
|
||||
}
|
||||
if (TextUtils.isEmpty(headerMessage)) {
|
||||
headerMessage = getString(getDefaultHeader());
|
||||
headerMessage = getDefaultHeader();
|
||||
}
|
||||
if (TextUtils.isEmpty(detailsMessage)) {
|
||||
detailsMessage = getString(getDefaultDetails());
|
||||
detailsMessage = getDefaultDetails();
|
||||
}
|
||||
mGlifLayout.setHeaderText(headerMessage);
|
||||
mGlifLayout.setDescriptionText(detailsMessage);
|
||||
@@ -228,29 +249,37 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
||||
}, 5000);
|
||||
}
|
||||
|
||||
private int getDefaultHeader() {
|
||||
private String getDefaultHeader() {
|
||||
if (mFrp) {
|
||||
return mIsAlpha ? R.string.lockpassword_confirm_your_password_header_frp
|
||||
: R.string.lockpassword_confirm_your_pin_header_frp;
|
||||
return mIsAlpha ? getString(R.string.lockpassword_confirm_your_password_header_frp)
|
||||
: getString(R.string.lockpassword_confirm_your_pin_header_frp);
|
||||
}
|
||||
if (mIsManagedProfile) {
|
||||
return mIsAlpha ? R.string.lockpassword_confirm_your_work_password_header
|
||||
: R.string.lockpassword_confirm_your_work_pin_header;
|
||||
if (mIsAlpha) {
|
||||
return mDevicePolicyManager.getString(
|
||||
CONFIRM_WORK_PROFILE_PASSWORD_HEADER,
|
||||
() -> getString(
|
||||
R.string.lockpassword_confirm_your_work_password_header));
|
||||
}
|
||||
return mDevicePolicyManager.getString(
|
||||
CONFIRM_WORK_PROFILE_PIN_HEADER,
|
||||
() -> getString(R.string.lockpassword_confirm_your_work_pin_header));
|
||||
}
|
||||
return mIsAlpha ? R.string.lockpassword_confirm_your_password_header
|
||||
: R.string.lockpassword_confirm_your_pin_header;
|
||||
return mIsAlpha ? getString(R.string.lockpassword_confirm_your_password_header)
|
||||
: getString(R.string.lockpassword_confirm_your_pin_header);
|
||||
}
|
||||
|
||||
private int getDefaultDetails() {
|
||||
private String getDefaultDetails() {
|
||||
if (mFrp) {
|
||||
return mIsAlpha ? R.string.lockpassword_confirm_your_password_details_frp
|
||||
: R.string.lockpassword_confirm_your_pin_details_frp;
|
||||
return mIsAlpha ? getString(R.string.lockpassword_confirm_your_password_details_frp)
|
||||
: getString(R.string.lockpassword_confirm_your_pin_details_frp);
|
||||
}
|
||||
boolean isStrongAuthRequired = isStrongAuthRequired();
|
||||
// Map boolean flags to an index by isStrongAuth << 2 + isManagedProfile << 1 + isAlpha.
|
||||
int index = ((isStrongAuthRequired ? 1 : 0) << 2) + ((mIsManagedProfile ? 1 : 0) << 1)
|
||||
+ (mIsAlpha ? 1 : 0);
|
||||
return DETAIL_TEXTS[index];
|
||||
return mDevicePolicyManager.getString(
|
||||
DETAIL_TEXT_OVERRIDES[index], () -> getString(DETAIL_TEXTS[index]));
|
||||
}
|
||||
|
||||
private int getErrorMessage() {
|
||||
@@ -259,7 +288,17 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLastTryErrorMessage(int userType) {
|
||||
protected String getLastTryOverrideErrorMessageId(int userType) {
|
||||
if (userType == USER_TYPE_MANAGED_PROFILE) {
|
||||
return mIsAlpha ? WORK_PROFILE_LAST_PASSWORD_ATTEMPT_BEFORE_WIPE
|
||||
: WORK_PROFILE_LAST_PIN_ATTEMPT_BEFORE_WIPE;
|
||||
}
|
||||
|
||||
return UNDEFINED;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLastTryDefaultErrorMessage(int userType) {
|
||||
switch (userType) {
|
||||
case USER_TYPE_PRIMARY:
|
||||
return mIsAlpha ? R.string.lock_last_password_attempt_before_wipe_device
|
||||
|
@@ -16,6 +16,12 @@
|
||||
|
||||
package com.android.settings.password;
|
||||
|
||||
import static android.app.admin.DevicePolicyResources.Strings.UNDEFINED;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.CONFIRM_WORK_PROFILE_PATTERN_HEADER;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONFIRM_PATTERN;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_LAST_PATTERN_ATTEMPT_BEFORE_WIPE;
|
||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_PATTERN_REQUIRED;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
@@ -258,19 +264,25 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
||||
mGlifLayout.getDescriptionTextView().setAlpha(0f);
|
||||
}
|
||||
|
||||
private int getDefaultDetails() {
|
||||
private String getDefaultDetails() {
|
||||
if (mFrp) {
|
||||
return R.string.lockpassword_confirm_your_pattern_details_frp;
|
||||
return getString(R.string.lockpassword_confirm_your_pattern_details_frp);
|
||||
}
|
||||
final boolean isStrongAuthRequired = isStrongAuthRequired();
|
||||
if (mIsManagedProfile) {
|
||||
return isStrongAuthRequired
|
||||
? R.string.lockpassword_strong_auth_required_work_pattern
|
||||
: R.string.lockpassword_confirm_your_pattern_generic_profile;
|
||||
if (isStrongAuthRequired) {
|
||||
return mDevicePolicyManager.getString(WORK_PROFILE_PATTERN_REQUIRED,
|
||||
() -> getString(
|
||||
R.string.lockpassword_strong_auth_required_work_pattern));
|
||||
} else {
|
||||
return mDevicePolicyManager.getString(WORK_PROFILE_CONFIRM_PATTERN,
|
||||
() -> getString(
|
||||
R.string.lockpassword_confirm_your_pattern_generic_profile));
|
||||
}
|
||||
} else {
|
||||
return isStrongAuthRequired
|
||||
? R.string.lockpassword_strong_auth_required_device_pattern
|
||||
: R.string.lockpassword_confirm_your_pattern_generic;
|
||||
? getString(R.string.lockpassword_strong_auth_required_device_pattern)
|
||||
: getString(R.string.lockpassword_confirm_your_pattern_generic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -352,11 +364,16 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
||||
mGlifLayout.getHeaderTextView().announceForAccessibility(mGlifLayout.getHeaderText());
|
||||
}
|
||||
|
||||
private int getDefaultHeader() {
|
||||
if (mFrp) return R.string.lockpassword_confirm_your_pattern_header_frp;
|
||||
return mIsManagedProfile
|
||||
? R.string.lockpassword_confirm_your_work_pattern_header
|
||||
: R.string.lockpassword_confirm_your_pattern_header;
|
||||
private String getDefaultHeader() {
|
||||
if (mFrp) return getString(R.string.lockpassword_confirm_your_pattern_header_frp);
|
||||
|
||||
if (mIsManagedProfile) {
|
||||
return mDevicePolicyManager.getString(
|
||||
CONFIRM_WORK_PROFILE_PATTERN_HEADER,
|
||||
() -> getString(R.string.lockpassword_confirm_your_work_pattern_header));
|
||||
}
|
||||
|
||||
return getString(R.string.lockpassword_confirm_your_pattern_header);
|
||||
}
|
||||
|
||||
private Runnable mClearPatternRunnable = new Runnable() {
|
||||
@@ -550,7 +567,16 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLastTryErrorMessage(int userType) {
|
||||
protected String getLastTryOverrideErrorMessageId(int userType) {
|
||||
if (userType == USER_TYPE_MANAGED_PROFILE) {
|
||||
return WORK_PROFILE_LAST_PATTERN_ATTEMPT_BEFORE_WIPE;
|
||||
}
|
||||
|
||||
return UNDEFINED;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLastTryDefaultErrorMessage(int userType) {
|
||||
switch (userType) {
|
||||
case USER_TYPE_PRIMARY:
|
||||
return R.string.lock_last_pattern_attempt_before_wipe_device;
|
||||
|
Reference in New Issue
Block a user