From 212e67253bf3530777043bf5300a4060825480ef Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Fri, 16 May 2014 19:55:09 +0200 Subject: [PATCH] Fix sample device admin Changes to some checkboxes were only applied after changing another checkbox / stopping and resuming the activity. Change-Id: Idec3461e60786d97000402badcc3a66b1bf33a82 --- .../android/apis/app/DeviceAdminSample.java | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) 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 a27dcdf90..70d4b6b03 100644 --- a/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java +++ b/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java @@ -205,6 +205,15 @@ public class DeviceAdminSample extends PreferenceActivity { } } + protected void postReloadSummaries() { + getView().post(new Runnable() { + @Override + public void run() { + reloadSummaries(); + } + }); + } + @Override public boolean onPreferenceClick(Preference preference) { if (mSetPassword != null && preference == mSetPassword) { @@ -347,14 +356,22 @@ public class DeviceAdminSample extends PreferenceActivity { } } else if (preference == mDisableCameraCheckbox) { mDPM.setCameraDisabled(mDeviceAdminSample, value); - reloadSummaries(); + // Delay update because the change is only applied after exiting this method. + postReloadSummaries(); } else if (preference == mDisableKeyguardWidgetsCheckbox || preference == mDisableKeyguardSecureCameraCheckbox || preference == mDisableKeyguardNotificationCheckbox || preference == mDisableKeyguardUnredactedCheckbox || preference == mDisableKeyguardTrustAgentCheckbox) { - mDPM.setKeyguardDisabledFeatures(mDeviceAdminSample, createKeyguardDisabledFlag()); - reloadSummaries(); + // Delay update because the change is only applied after exiting this method. + getView().post(new Runnable() { + @Override + public void run() { + mDPM.setKeyguardDisabledFeatures(mDeviceAdminSample, + createKeyguardDisabledFlag()); + } + }); + postReloadSummaries(); } return true; } @@ -549,7 +566,8 @@ public class DeviceAdminSample extends PreferenceActivity { } else if (preference == mMinNonLetter) { mDPM.setPasswordMinimumNonLetter(mDeviceAdminSample, value); } - reloadSummaries(); + // Delay update because the change is only applied after exiting this method. + postReloadSummaries(); return true; } @@ -639,7 +657,8 @@ public class DeviceAdminSample extends PreferenceActivity { } else if (preference == mExpirationTimeout) { mDPM.setPasswordExpirationTimeout(mDeviceAdminSample, value * MS_PER_MINUTE); } - reloadSummaries(); + // Delay update because the change is only applied after exiting this method. + postReloadSummaries(); return true; } @@ -777,7 +796,8 @@ public class DeviceAdminSample extends PreferenceActivity { } mDPM.setMaximumFailedPasswordsForWipe(mDeviceAdminSample, value); } - reloadSummaries(); + // Delay update because the change is only applied after exiting this method. + postReloadSummaries(); return true; } @@ -895,7 +915,8 @@ public class DeviceAdminSample extends PreferenceActivity { if (preference == mRequireEncryption) { boolean newActive = (Boolean) newValue; mDPM.setStorageEncryption(mDeviceAdminSample, newActive); - reloadSummaries(); + // Delay update because the change is only applied after exiting this method. + postReloadSummaries(); return true; } return true;