diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/settings/DevelopmentSettings.java | 36 | ||||
-rw-r--r-- | src/com/android/settings/KeyguardAppWidgetPickActivity.java | 4 |
2 files changed, 34 insertions, 6 deletions
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index d540195..03143b4 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; @@ -89,6 +90,7 @@ public class DevelopmentSettings extends PreferenceFragment private static final String ENABLE_ADB = "enable_adb"; private static final String CLEAR_ADB_KEYS = "clear_adb_keys"; + private static final String ENABLE_TERMINAL = "enable_terminal"; private static final String KEEP_SCREEN_ON = "keep_screen_on"; private static final String ALLOW_MOCK_LOCATION = "allow_mock_location"; private static final String HDCP_CHECKING_KEY = "hdcp_checking"; @@ -137,6 +139,8 @@ public class DevelopmentSettings extends PreferenceFragment private static final String PACKAGE_MIME_TYPE = "application/vnd.android.package-archive"; + private static final String TERMINAL_APP_PACKAGE = "com.android.terminal"; + private static final int RESULT_DEBUG_APP = 1000; private IWindowManager mWindowManager; @@ -150,6 +154,7 @@ public class DevelopmentSettings extends PreferenceFragment private CheckBoxPreference mEnableAdb; private Preference mClearAdbKeys; + private CheckBoxPreference mEnableTerminal; private Preference mBugreport; private CheckBoxPreference mBugreportInPower; private CheckBoxPreference mKeepScreenOn; @@ -211,15 +216,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); @@ -232,6 +243,7 @@ public class DevelopmentSettings extends PreferenceFragment if (!android.os.Process.myUserHandle().equals(UserHandle.OWNER)) { disableForUser(mEnableAdb); disableForUser(mClearAdbKeys); + disableForUser(mEnableTerminal); disableForUser(mPassword); } @@ -240,8 +252,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 { @@ -415,6 +425,11 @@ public class DevelopmentSettings extends PreferenceFragment mHaveDebugSettings = false; updateCheckBox(mEnableAdb, Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0) != 0); + 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, @@ -1059,6 +1074,11 @@ public class DevelopmentSettings extends PreferenceFragment .setPositiveButton(android.R.string.ok, this) .setNegativeButton(android.R.string.cancel, null) .show(); + } else if (preference == mEnableTerminal) { + final PackageManager pm = getActivity().getPackageManager(); + pm.setApplicationEnabledSetting(TERMINAL_APP_PACKAGE, + mEnableTerminal.isChecked() ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED + : PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0); } else if (preference == mBugreportInPower) { Settings.Secure.putInt(getActivity().getContentResolver(), Settings.Secure.BUGREPORT_IN_POWER_MENU, @@ -1315,4 +1335,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; + } + } } diff --git a/src/com/android/settings/KeyguardAppWidgetPickActivity.java b/src/com/android/settings/KeyguardAppWidgetPickActivity.java index 8e08019..f3db2ca 100644 --- a/src/com/android/settings/KeyguardAppWidgetPickActivity.java +++ b/src/com/android/settings/KeyguardAppWidgetPickActivity.java @@ -517,8 +517,8 @@ public class KeyguardAppWidgetPickActivity extends Activity // Found in KeyguardHostView.java final int KEYGUARD_HOST_ID = 0x4B455947; int userId = ActivityManager.getCurrentUser(); - mAppWidgetId = AppWidgetHost.allocateAppWidgetIdForSystem(KEYGUARD_HOST_ID, - userId); + mAppWidgetId = AppWidgetHost.allocateAppWidgetIdForPackage(KEYGUARD_HOST_ID, + userId, "com.android.keyguard"); } mAppWidgetManager.bindAppWidgetId( mAppWidgetId, intent.getComponent(), mExtraConfigureOptions); |