diff options
author | Oscar Montemayor <oam@google.com> | 2010-02-10 16:04:18 -0800 |
---|---|---|
committer | Oscar Montemayor <oam@google.com> | 2010-02-22 16:13:36 -0800 |
commit | a110a718bac811c014b80c123a447e45ab1b1dd9 (patch) | |
tree | 46bcaf6eb66e1f260d38faf909a1a980004db71a /src/com | |
parent | cb497546ba55ef98fb561dd9a07c7a485a918f4b (diff) | |
download | packages_apps_settings-a110a718bac811c014b80c123a447e45ab1b1dd9.zip packages_apps_settings-a110a718bac811c014b80c123a447e45ab1b1dd9.tar.gz packages_apps_settings-a110a718bac811c014b80c123a447e45ab1b1dd9.tar.bz2 |
Apps on SD Card project.
Settings for Manage Applications that allow the user to choose default application installaction location.
Options are: internal flash, SD card, or automatic.
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/settings/ApplicationSettings.java | 72 |
1 files changed, 67 insertions, 5 deletions
diff --git a/src/com/android/settings/ApplicationSettings.java b/src/com/android/settings/ApplicationSettings.java index 6a8aa81..9b7a919 100644 --- a/src/com/android/settings/ApplicationSettings.java +++ b/src/com/android/settings/ApplicationSettings.java @@ -21,21 +21,35 @@ import android.content.DialogInterface; import android.content.res.Configuration; import android.os.Bundle; import android.preference.CheckBoxPreference; +import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; +import android.preference.Preference.OnPreferenceChangeListener; import android.provider.Settings; public class ApplicationSettings extends PreferenceActivity implements DialogInterface.OnClickListener { private static final String KEY_TOGGLE_INSTALL_APPLICATIONS = "toggle_install_applications"; + private static final String KEY_APP_INSTALL_LOCATION = "app_install_location"; private static final String KEY_QUICK_LAUNCH = "quick_launch"; - private CheckBoxPreference mToggleAppInstallation; + // App installation location. Default is ask the user. + private static final int APP_INSTALL_AUTO = 0; + private static final int APP_INSTALL_DEVICE = 1; + private static final int APP_INSTALL_SDCARD = 2; - private DialogInterface mWarnInstallApps; + private static final String APP_INSTALL_DEVICE_ID = "device"; + private static final String APP_INSTALL_SDCARD_ID = "sdcard"; + private static final String APP_INSTALL_AUTO_ID = "auto"; + private CheckBoxPreference mToggleAppInstallation; + + private ListPreference mInstallLocation; + + private DialogInterface mWarnInstallApps; + @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -45,6 +59,23 @@ public class ApplicationSettings extends PreferenceActivity implements mToggleAppInstallation = (CheckBoxPreference) findPreference(KEY_TOGGLE_INSTALL_APPLICATIONS); mToggleAppInstallation.setChecked(isNonMarketAppsAllowed()); + mInstallLocation = (ListPreference) findPreference(KEY_APP_INSTALL_LOCATION); + // Is app default install location set? + boolean userSetInstLocation = (Settings.System.getInt(getContentResolver(), + Settings.System.SET_INSTALL_LOCATION, 0) != 0); + if (!userSetInstLocation) { + getPreferenceScreen().removePreference(mInstallLocation); + } else { + mInstallLocation.setValue(getAppInstallLocation()); + mInstallLocation.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + public boolean onPreferenceChange(Preference preference, Object newValue) { + String value = (String) newValue; + handleUpdateAppInstallLocation(value); + return false; + } + }); + } + if (getResources().getConfiguration().keyboard == Configuration.KEYBOARD_NOKEYS) { // No hard keyboard, remove the setting for quick launch Preference quickLaunchSetting = findPreference(KEY_QUICK_LAUNCH); @@ -52,6 +83,24 @@ public class ApplicationSettings extends PreferenceActivity implements } } + protected void handleUpdateAppInstallLocation(final String value) { + if(APP_INSTALL_DEVICE_ID.equals(value)) { + Settings.System.putInt(getContentResolver(), + Settings.System.DEFAULT_INSTALL_LOCATION, APP_INSTALL_DEVICE); + } else if (APP_INSTALL_SDCARD_ID.equals(value)) { + Settings.System.putInt(getContentResolver(), + Settings.System.DEFAULT_INSTALL_LOCATION, APP_INSTALL_SDCARD); + } else if (APP_INSTALL_AUTO_ID.equals(value)) { + Settings.System.putInt(getContentResolver(), + Settings.System.DEFAULT_INSTALL_LOCATION, APP_INSTALL_AUTO); + } else { + // Should not happen, default to prompt... + Settings.System.putInt(getContentResolver(), + Settings.System.DEFAULT_INSTALL_LOCATION, APP_INSTALL_AUTO); + } + mInstallLocation.setValue(value); + } + @Override protected void onDestroy() { super.onDestroy(); @@ -70,7 +119,7 @@ public class ApplicationSettings extends PreferenceActivity implements setNonMarketAppsAllowed(false); } } - + return super.onPreferenceTreeClick(preferenceScreen, preference); } @@ -92,6 +141,21 @@ public class ApplicationSettings extends PreferenceActivity implements Settings.Secure.INSTALL_NON_MARKET_APPS, 0) > 0; } + private String getAppInstallLocation() { + int selectedLocation = Settings.System.getInt(getContentResolver(), + Settings.System.DEFAULT_INSTALL_LOCATION, APP_INSTALL_AUTO); + if (selectedLocation == APP_INSTALL_DEVICE) { + return APP_INSTALL_DEVICE_ID; + } else if (selectedLocation == APP_INSTALL_SDCARD) { + return APP_INSTALL_SDCARD_ID; + } else if (selectedLocation == APP_INSTALL_AUTO) { + return APP_INSTALL_AUTO_ID; + } else { + // Default value, should not happen. + return APP_INSTALL_AUTO_ID; + } + } + private void warnAppInstallation() { mWarnInstallApps = new AlertDialog.Builder(this) .setTitle(getString(R.string.error_title)) @@ -101,6 +165,4 @@ public class ApplicationSettings extends PreferenceActivity implements .setNegativeButton(android.R.string.no, null) .show(); } - - } |