From 0366d14fb8b1cfad20a016ecb0ae714a41419d33 Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Sun, 29 Sep 2013 14:04:40 -0700 Subject: [PATCH] Disable keyguard widgets on low memory devices Fixes bug 10784493 Change-Id: Idc1c35faf0715814fa1a257319888945c82527c6 --- .../android/settings/SecuritySettings.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index f36540356f4..e0022649484 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -20,6 +20,7 @@ package com.android.settings; import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; import android.app.Activity; +import android.app.ActivityManager; import android.app.AlertDialog; import android.app.admin.DevicePolicyManager; import android.content.Context; @@ -244,15 +245,25 @@ public class SecuritySettings extends RestrictedSettingsFragment // Enable or disable keyguard widget checkbox based on DPM state mEnableKeyguardWidgets = (CheckBoxPreference) root.findPreference(KEY_ENABLE_WIDGETS); if (mEnableKeyguardWidgets != null) { - final boolean disabled = (0 != (mDPM.getKeyguardDisabledFeatures(null) - & DevicePolicyManager.KEYGUARD_DISABLE_WIDGETS_ALL)); - if (disabled) { - mEnableKeyguardWidgets.setSummary( - R.string.security_enable_widgets_disabled_summary); + if (ActivityManager.isLowRamDeviceStatic()) { + // Widgets take a lot of RAM, so disable them on low-memory devices + PreferenceGroup securityCategory + = (PreferenceGroup) root.findPreference(KEY_SECURITY_CATEGORY); + if (securityCategory != null) { + securityCategory.removePreference(root.findPreference(KEY_ENABLE_WIDGETS)); + mEnableKeyguardWidgets = null; + } } else { - mEnableKeyguardWidgets.setSummary(""); + final boolean disabled = (0 != (mDPM.getKeyguardDisabledFeatures(null) + & DevicePolicyManager.KEYGUARD_DISABLE_WIDGETS_ALL)); + if (disabled) { + mEnableKeyguardWidgets.setSummary( + R.string.security_enable_widgets_disabled_summary); + } else { + mEnableKeyguardWidgets.setSummary(""); + } + mEnableKeyguardWidgets.setEnabled(!disabled); } - mEnableKeyguardWidgets.setEnabled(!disabled); } // Show password