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);
}
}