diff --git a/samples/ApiDemos/res/layout/device_admin_sample.xml b/samples/ApiDemos/res/layout/device_admin_sample.xml
index 2827c010b..d4f3147a8 100644
--- a/samples/ApiDemos/res/layout/device_admin_sample.xml
+++ b/samples/ApiDemos/res/layout/device_admin_sample.xml
@@ -62,11 +62,23 @@
-
+
+
+
+
+
+
+
+
diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml
index 25f1bf926..67f187867 100644
--- a/samples/ApiDemos/res/values/strings.xml
+++ b/samples/ApiDemos/res/values/strings.xml
@@ -472,6 +472,7 @@
Disable Admin
Password Quality
Minimum Length
+ Password History Length
Set Password
Password
Reset Password
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java b/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java
index f7ee2d73c..b62706a63 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java
@@ -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