From 1d18d453d8574f351b4ff82f171d32b787cb8ab5 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 6 Mar 2013 11:22:02 -0800 Subject: [PATCH 1/2] Guard against missing terminal app. Bug: 8328852 Change-Id: Icbc8942729af5a525f55b8c90513ff724c6f90e0 --- .../android/settings/DevelopmentSettings.java | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index a1c6c903316..89dc8bac82d 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -34,6 +34,7 @@ import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.hardware.usb.IUsbManager; import android.os.AsyncTask; @@ -211,16 +212,21 @@ public class DevelopmentSettings extends PreferenceFragment addPreferencesFromResource(R.xml.development_prefs); + final PreferenceGroup debugDebuggingCategory = (PreferenceGroup) + findPreference(DEBUG_DEBUGGING_CATEGORY_KEY); + mEnableAdb = findAndInitCheckboxPref(ENABLE_ADB); mClearAdbKeys = findPreference(CLEAR_ADB_KEYS); if (!SystemProperties.getBoolean("ro.adb.secure", false)) { - PreferenceGroup debugDebuggingCategory = (PreferenceGroup) - findPreference(DEBUG_DEBUGGING_CATEGORY_KEY); if (debugDebuggingCategory != null) { debugDebuggingCategory.removePreference(mClearAdbKeys); } } mEnableTerminal = findAndInitCheckboxPref(ENABLE_TERMINAL); + if (!isPackageInstalled(getActivity(), TERMINAL_APP_PACKAGE)) { + debugDebuggingCategory.removePreference(mEnableTerminal); + mEnableTerminal = null; + } mBugreport = findPreference(BUGREPORT); mBugreportInPower = findAndInitCheckboxPref(BUGREPORT_IN_POWER_KEY); @@ -242,8 +248,6 @@ public class DevelopmentSettings extends PreferenceFragment mWaitForDebugger = findAndInitCheckboxPref(WAIT_FOR_DEBUGGER_KEY); mVerifyAppsOverUsb = findAndInitCheckboxPref(VERIFY_APPS_OVER_USB_KEY); if (!showVerifierSetting()) { - PreferenceGroup debugDebuggingCategory = (PreferenceGroup) - findPreference(DEBUG_DEBUGGING_CATEGORY_KEY); if (debugDebuggingCategory != null) { debugDebuggingCategory.removePreference(mVerifyAppsOverUsb); } else { @@ -408,9 +412,11 @@ public class DevelopmentSettings extends PreferenceFragment mHaveDebugSettings = false; updateCheckBox(mEnableAdb, Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0) != 0); - updateCheckBox(mEnableTerminal, - context.getPackageManager().getApplicationEnabledSetting(TERMINAL_APP_PACKAGE) - == PackageManager.COMPONENT_ENABLED_STATE_ENABLED); + if (mEnableTerminal != null) { + updateCheckBox(mEnableTerminal, + context.getPackageManager().getApplicationEnabledSetting(TERMINAL_APP_PACKAGE) + == PackageManager.COMPONENT_ENABLED_STATE_ENABLED); + } updateCheckBox(mBugreportInPower, Settings.Secure.getInt(cr, Settings.Secure.BUGREPORT_IN_POWER_MENU, 0) != 0); updateCheckBox(mKeepScreenOn, Settings.Global.getInt(cr, @@ -1298,4 +1304,12 @@ public class DevelopmentSettings extends PreferenceFragment throw new RuntimeException("Problem talking with PackageManager", e); } } + + private static boolean isPackageInstalled(Context context, String packageName) { + try { + return context.getPackageManager().getPackageInfo(packageName, 0) != null; + } catch (NameNotFoundException e) { + return false; + } + } } From 4bba940721845d1fc886cedf748d8ce9c982b081 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 5 Jun 2013 17:51:38 -0700 Subject: [PATCH 2/2] Always allow formatting of physical storage. Also rebuild UI when volume state changes after a format finishes. Bug: 8985206 Change-Id: I6208e385711b883fb6fc77cc76cbe425d740b0a8 --- .../deviceinfo/StorageVolumePreferenceCategory.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/deviceinfo/StorageVolumePreferenceCategory.java b/src/com/android/settings/deviceinfo/StorageVolumePreferenceCategory.java index 61188ec1c2c..1992facf60e 100644 --- a/src/com/android/settings/deviceinfo/StorageVolumePreferenceCategory.java +++ b/src/com/android/settings/deviceinfo/StorageVolumePreferenceCategory.java @@ -137,6 +137,8 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory { public void init() { final Context context = getContext(); + removeAll(); + final UserInfo currentUser; try { currentUser = ActivityManagerNative.getDefault().getCurrentUser(); @@ -242,9 +244,6 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory { if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { mItemAvailable.setTitle(R.string.memory_available_read_only); - if (mFormatPreference != null) { - removePreference(mFormatPreference); - } } else { mItemAvailable.setTitle(R.string.memory_available); } @@ -269,9 +268,6 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory { removePreference(mUsageBarPreference); removePreference(mItemTotal); removePreference(mItemAvailable); - if (mFormatPreference != null) { - removePreference(mFormatPreference); - } } if (mUsbConnected && (UsbManager.USB_FUNCTION_MTP.equals(mUsbFunction) || @@ -374,6 +370,7 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory { } public void onStorageStateChanged() { + init(); measure(); }