Fix 2673731: Adding support for password history to the Device Admin Sample App.
Change-Id: I1380ff9475c201d3c2ec2ec449b1103c3d55a3a7
This commit is contained in:
@@ -62,12 +62,24 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout android:orientation="horizontal" android:gravity="center"
|
||||
android:layout_width="match_parent" android:layout_height="wrap_content">
|
||||
|
||||
<EditText android:id="@+id/password_history_length"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/password_history_length_hint"
|
||||
android:inputType="number">
|
||||
</EditText>
|
||||
|
||||
<Button android:id="@+id/set_password"
|
||||
android:layout_width="wrap_content" android:layout_height="wrap_content"
|
||||
android_layout_gravity="east|center_vertical"
|
||||
android:text="@string/set_password">
|
||||
</Button>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout android:orientation="horizontal" android:gravity="center"
|
||||
android:layout_width="match_parent" android:layout_height="wrap_content">
|
||||
|
||||
|
||||
@@ -472,6 +472,7 @@
|
||||
<string name="disable_admin">Disable Admin</string>
|
||||
<string name="password_quality">Password Quality</string>
|
||||
<string name="password_length_hint">Minimum Length</string>
|
||||
<string name="password_history_length_hint">Password History Length</string>
|
||||
<string name="set_password">Set Password</string>
|
||||
<string name="password_hint">Password</string>
|
||||
<string name="reset_password">Reset Password</string>
|
||||
|
||||
@@ -54,6 +54,7 @@ public class DeviceAdminSample extends DeviceAdminReceiver {
|
||||
|
||||
static String PREF_PASSWORD_QUALITY = "password_quality";
|
||||
static String PREF_PASSWORD_LENGTH = "password_length";
|
||||
static String PREF_PASSWORD_HISTORY_LENGTH = "password_history_length";
|
||||
static String PREF_MAX_FAILED_PW = "max_failed_pw";
|
||||
|
||||
void showToast(Context context, CharSequence msg) {
|
||||
@@ -119,6 +120,7 @@ public class DeviceAdminSample extends DeviceAdminReceiver {
|
||||
};
|
||||
Spinner mPasswordQuality;
|
||||
EditText mPasswordLength;
|
||||
EditText mPasswordHistoryLength;
|
||||
Button mSetPasswordButton;
|
||||
|
||||
EditText mPassword;
|
||||
@@ -178,6 +180,19 @@ public class DeviceAdminSample extends DeviceAdminReceiver {
|
||||
}
|
||||
}
|
||||
});
|
||||
mPasswordHistoryLength = (EditText)findViewById(R.id.password_history_length);
|
||||
mPasswordHistoryLength.addTextChangedListener(new TextWatcher() {
|
||||
public void afterTextChanged(Editable s) {
|
||||
}
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
try {
|
||||
setPasswordHistoryLength(Integer.parseInt(s.toString()));
|
||||
} catch (NumberFormatException e) {
|
||||
}
|
||||
}
|
||||
});
|
||||
mSetPasswordButton = (Button)findViewById(R.id.set_password);
|
||||
mSetPasswordButton.setOnClickListener(mSetPasswordListener);
|
||||
|
||||
@@ -221,6 +236,7 @@ public class DeviceAdminSample extends DeviceAdminReceiver {
|
||||
mDisableButton.setEnabled(true);
|
||||
mPasswordQuality.setEnabled(true);
|
||||
mPasswordLength.setEnabled(true);
|
||||
mPasswordHistoryLength.setEnabled(true);
|
||||
mSetPasswordButton.setEnabled(true);
|
||||
mPassword.setEnabled(true);
|
||||
mResetPasswordButton.setEnabled(true);
|
||||
@@ -231,6 +247,7 @@ public class DeviceAdminSample extends DeviceAdminReceiver {
|
||||
mDisableButton.setEnabled(false);
|
||||
mPasswordQuality.setEnabled(false);
|
||||
mPasswordLength.setEnabled(false);
|
||||
mPasswordHistoryLength.setEnabled(false);
|
||||
mSetPasswordButton.setEnabled(false);
|
||||
mPassword.setEnabled(false);
|
||||
mResetPasswordButton.setEnabled(false);
|
||||
@@ -244,6 +261,7 @@ public class DeviceAdminSample extends DeviceAdminReceiver {
|
||||
final int pwQuality = prefs.getInt(PREF_PASSWORD_QUALITY,
|
||||
DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
|
||||
final int pwLength = prefs.getInt(PREF_PASSWORD_LENGTH, 0);
|
||||
final int pwHistoryLength = prefs.getInt(PREF_PASSWORD_HISTORY_LENGTH, 0);
|
||||
final int maxFailedPw = prefs.getInt(PREF_MAX_FAILED_PW, 0);
|
||||
|
||||
for (int i=0; i<mPasswordQualityValues.length; i++) {
|
||||
@@ -252,6 +270,7 @@ public class DeviceAdminSample extends DeviceAdminReceiver {
|
||||
}
|
||||
}
|
||||
mPasswordLength.setText(Integer.toString(pwLength));
|
||||
mPasswordHistoryLength.setText(Integer.toString(pwHistoryLength));
|
||||
mMaxFailedPw.setText(Integer.toString(maxFailedPw));
|
||||
}
|
||||
|
||||
@@ -260,12 +279,14 @@ public class DeviceAdminSample extends DeviceAdminReceiver {
|
||||
final int pwQuality = prefs.getInt(PREF_PASSWORD_QUALITY,
|
||||
DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
|
||||
final int pwLength = prefs.getInt(PREF_PASSWORD_LENGTH, 0);
|
||||
final int pwHistoryLength = prefs.getInt(PREF_PASSWORD_HISTORY_LENGTH, 0);
|
||||
final int maxFailedPw = prefs.getInt(PREF_MAX_FAILED_PW, 0);
|
||||
|
||||
boolean active = mDPM.isAdminActive(mDeviceAdminSample);
|
||||
if (active) {
|
||||
mDPM.setPasswordQuality(mDeviceAdminSample, pwQuality);
|
||||
mDPM.setPasswordMinimumLength(mDeviceAdminSample, pwLength);
|
||||
mDPM.setPasswordHistoryLength(mDeviceAdminSample, pwHistoryLength);
|
||||
mDPM.setMaximumFailedPasswordsForWipe(mDeviceAdminSample, maxFailedPw);
|
||||
}
|
||||
}
|
||||
@@ -282,6 +303,12 @@ public class DeviceAdminSample extends DeviceAdminReceiver {
|
||||
updatePolicies();
|
||||
}
|
||||
|
||||
void setPasswordHistoryLength(int length) {
|
||||
SharedPreferences prefs = getSamplePreferences(this);
|
||||
prefs.edit().putInt(PREF_PASSWORD_HISTORY_LENGTH, length).commit();
|
||||
updatePolicies();
|
||||
}
|
||||
|
||||
void setMaxFailedPw(int length) {
|
||||
SharedPreferences prefs = getSamplePreferences(this);
|
||||
prefs.edit().putInt(PREF_MAX_FAILED_PW, length).commit();
|
||||
|
||||
Reference in New Issue
Block a user