diff --git a/samples/ApiDemos/res/layout/sample_device_admin.xml b/samples/ApiDemos/res/layout/sample_device_admin.xml
index f357eaf89..9e1d1774f 100644
--- a/samples/ApiDemos/res/layout/sample_device_admin.xml
+++ b/samples/ApiDemos/res/layout/sample_device_admin.xml
@@ -87,6 +87,18 @@
+
+
+
+
+
+
+
diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml
index 0ccf46638..a70b56046 100644
--- a/samples/ApiDemos/res/values/strings.xml
+++ b/samples/ApiDemos/res/values/strings.xml
@@ -453,6 +453,7 @@
Set Password
Password
Reset Password
+ Password Attempts Wipe Data
Force Lock
Wipe Data
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/SampleDeviceAdmin.java b/samples/ApiDemos/src/com/example/android/apis/app/SampleDeviceAdmin.java
index 819d85bf0..62ceb43c8 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/SampleDeviceAdmin.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/SampleDeviceAdmin.java
@@ -53,6 +53,7 @@ public class SampleDeviceAdmin extends DeviceAdmin {
static String PREF_PASSWORD_MODE = "password_mode";
static String PREF_PASSWORD_LENGTH = "password_length";
+ static String PREF_MAX_FAILED_PW = "max_failed_pw";
void showToast(Context context, CharSequence msg) {
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
@@ -63,6 +64,11 @@ public class SampleDeviceAdmin extends DeviceAdmin {
showToast(context, "Sample Device Admin: enabled");
}
+ @Override
+ public CharSequence onDisableRequested(Context context, Intent intent) {
+ return "This is an optional message to warn the user about disabling.";
+ }
+
@Override
public void onDisabled(Context context, Intent intent) {
showToast(context, "Sample Device Admin: disabled");
@@ -115,6 +121,8 @@ public class SampleDeviceAdmin extends DeviceAdmin {
EditText mPassword;
Button mResetPasswordButton;
+ EditText mMaxFailedPw;
+
Button mForceLockButton;
Button mWipeDataButton;
@@ -169,6 +177,20 @@ public class SampleDeviceAdmin extends DeviceAdmin {
mResetPasswordButton = (Button)findViewById(R.id.reset_password);
mResetPasswordButton.setOnClickListener(mResetPasswordListener);
+ mMaxFailedPw = (EditText)findViewById(R.id.max_failed_pw);
+ mMaxFailedPw.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 {
+ setMaxFailedPw(Integer.parseInt(s.toString()));
+ } catch (NumberFormatException e) {
+ }
+ }
+ });
+
mForceLockButton = (Button)findViewById(R.id.force_lock);
mForceLockButton.setOnClickListener(mForceLockListener);
mWipeDataButton = (Button)findViewById(R.id.wipe_data);
@@ -205,12 +227,15 @@ public class SampleDeviceAdmin extends DeviceAdmin {
final int pwMode = prefs.getInt(PREF_PASSWORD_MODE,
DevicePolicyManager.PASSWORD_MODE_UNSPECIFIED);
final int pwLength = prefs.getInt(PREF_PASSWORD_LENGTH, 0);
+ final int maxFailedPw = prefs.getInt(PREF_MAX_FAILED_PW, 0);
+
for (int i=0; i