diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml index 04c7dc36a..e1e8adbbf 100644 --- a/samples/ApiDemos/res/values/strings.xml +++ b/samples/ApiDemos/res/values/strings.xml @@ -173,7 +173,7 @@ App/Fragment/Stack Push Pop - + First Last @@ -677,6 +677,12 @@ Enable admin Device capabilities Disable all device cameras + Disable keyguard widgets + Disable keyguard secure camera + Keyguard widgets disabled + Keyguard widgets enabled + Keyguard secure camera disabled + Keyguard secure camera enabled Device cameras disabled Device cameras enabled Password controls diff --git a/samples/ApiDemos/res/xml/device_admin_general.xml b/samples/ApiDemos/res/xml/device_admin_general.xml index 61ccd3241..3a1dd452d 100644 --- a/samples/ApiDemos/res/xml/device_admin_general.xml +++ b/samples/ApiDemos/res/xml/device_admin_general.xml @@ -35,6 +35,14 @@ android:key="key_disable_camera" android:title="@string/disable_camera" /> + + + + diff --git a/samples/ApiDemos/res/xml/device_admin_sample.xml b/samples/ApiDemos/res/xml/device_admin_sample.xml index 24689196e..4c8fc4033 100644 --- a/samples/ApiDemos/res/xml/device_admin_sample.xml +++ b/samples/ApiDemos/res/xml/device_admin_sample.xml @@ -25,6 +25,7 @@ + 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 324b8ce6a..db501859e 100644 --- a/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java +++ b/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java @@ -68,6 +68,9 @@ public class DeviceAdminSample extends PreferenceActivity { // The following keys are used to find each preference item private static final String KEY_ENABLE_ADMIN = "key_enable_admin"; private static final String KEY_DISABLE_CAMERA = "key_disable_camera"; + private static final String KEY_DISABLE_KEYGUARD_WIDGETS = "key_disable_keyguard_widgets"; + private static final String KEY_DISABLE_KEYGUARD_SECURE_CAMERA + = "key_disable_keyguard_secure_camera"; private static final String KEY_CATEGORY_QUALITY = "key_category_quality"; private static final String KEY_SET_PASSWORD = "key_set_password"; @@ -245,6 +248,8 @@ public class DeviceAdminSample extends PreferenceActivity { // UI elements private CheckBoxPreference mEnableCheckbox; private CheckBoxPreference mDisableCameraCheckbox; + private CheckBoxPreference mDisableKeyguardWidgetsCheckbox; + private CheckBoxPreference mDisableKeyguardSecureCameraCheckbox; @Override public void onCreate(Bundle savedInstanceState) { @@ -254,6 +259,12 @@ public class DeviceAdminSample extends PreferenceActivity { mEnableCheckbox.setOnPreferenceChangeListener(this); mDisableCameraCheckbox = (CheckBoxPreference) findPreference(KEY_DISABLE_CAMERA); mDisableCameraCheckbox.setOnPreferenceChangeListener(this); + mDisableKeyguardWidgetsCheckbox = + (CheckBoxPreference) findPreference(KEY_DISABLE_KEYGUARD_WIDGETS); + mDisableKeyguardWidgetsCheckbox.setOnPreferenceChangeListener(this); + mDisableKeyguardSecureCameraCheckbox = + (CheckBoxPreference) findPreference(KEY_DISABLE_KEYGUARD_SECURE_CAMERA); + mDisableKeyguardSecureCameraCheckbox.setOnPreferenceChangeListener(this); } // At onResume time, reload UI with current values as required @@ -265,10 +276,20 @@ public class DeviceAdminSample extends PreferenceActivity { if (mAdminActive) { mDPM.setCameraDisabled(mDeviceAdminSample, mDisableCameraCheckbox.isChecked()); + mDPM.setKeyguardDisabledFeatures(mDeviceAdminSample, createKeyguardDisabledFlag()); reloadSummaries(); } } + int createKeyguardDisabledFlag() { + int flags = DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_NONE; + flags |= mDisableKeyguardWidgetsCheckbox.isChecked() ? + DevicePolicyManager.KEYGUARD_DISABLE_WIDGETS_ALL : 0; + flags |= mDisableKeyguardSecureCameraCheckbox.isChecked() ? + DevicePolicyManager.KEYGUARD_DISABLE_SECURE_CAMERA : 0; + return flags; + } + @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (super.onPreferenceChange(preference, newValue)) { @@ -295,6 +316,10 @@ public class DeviceAdminSample extends PreferenceActivity { } else if (preference == mDisableCameraCheckbox) { mDPM.setCameraDisabled(mDeviceAdminSample, value); reloadSummaries(); + } else if (preference == mDisableKeyguardWidgetsCheckbox + || preference == mDisableKeyguardSecureCameraCheckbox) { + mDPM.setKeyguardDisabledFeatures(mDeviceAdminSample, createKeyguardDisabledFlag()); + reloadSummaries(); } return true; } @@ -305,11 +330,25 @@ public class DeviceAdminSample extends PreferenceActivity { String cameraSummary = getString(mDPM.getCameraDisabled(mDeviceAdminSample) ? R.string.camera_disabled : R.string.camera_enabled); mDisableCameraCheckbox.setSummary(cameraSummary); + + int disabled = mDPM.getKeyguardDisabledFeatures(mDeviceAdminSample); + + String keyguardWidgetSummary = getString( + (disabled & DevicePolicyManager.KEYGUARD_DISABLE_WIDGETS_ALL) != 0 ? + R.string.keyguard_widgets_disabled : R.string.keyguard_widgets_enabled); + mDisableKeyguardWidgetsCheckbox.setSummary(keyguardWidgetSummary); + + String keyguardSecureCameraSummary = getString( + (disabled & DevicePolicyManager.KEYGUARD_DISABLE_SECURE_CAMERA) != 0 ? + R.string.keyguard_secure_camera_disabled : R.string.keyguard_secure_camera_enabled); + mDisableKeyguardSecureCameraCheckbox.setSummary(keyguardSecureCameraSummary); } /** Updates the device capabilities area (dis/enabling) as the admin is (de)activated */ private void enableDeviceCapabilitiesArea(boolean enabled) { mDisableCameraCheckbox.setEnabled(enabled); + mDisableKeyguardWidgetsCheckbox.setEnabled(enabled); + mDisableKeyguardSecureCameraCheckbox.setEnabled(enabled); } }