diff options
author | Suchi Amalapurapu <asuchitra@google.com> | 2010-04-07 21:24:44 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-04-07 21:24:44 -0700 |
commit | 3a95f92650e6bd9a994048878abda0950c11ec8b (patch) | |
tree | d84e9a9ba48b5e8f9abe9076ac763650c38da5f5 /src/com/android | |
parent | 0557a7062d4e40d895cbc86253a39cfe7f720f06 (diff) | |
parent | 4056459e9e6bf766168aff4cfe41b0a28a843323 (diff) | |
download | packages_apps_settings-3a95f92650e6bd9a994048878abda0950c11ec8b.zip packages_apps_settings-3a95f92650e6bd9a994048878abda0950c11ec8b.tar.gz packages_apps_settings-3a95f92650e6bd9a994048878abda0950c11ec8b.tar.bz2 |
Merge "Fix 2579461 Disable move when manifest option for install location is unspecified and install location is auto/internal" into froyo
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/settings/ApplicationSettings.java | 12 | ||||
-rw-r--r-- | src/com/android/settings/InstalledAppDetails.java | 40 |
2 files changed, 38 insertions, 14 deletions
diff --git a/src/com/android/settings/ApplicationSettings.java b/src/com/android/settings/ApplicationSettings.java index 9b7a919..c743f1c 100644 --- a/src/com/android/settings/ApplicationSettings.java +++ b/src/com/android/settings/ApplicationSettings.java @@ -62,7 +62,7 @@ public class ApplicationSettings extends PreferenceActivity implements 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); + Settings.Secure.SET_INSTALL_LOCATION, 0) != 0); if (!userSetInstLocation) { getPreferenceScreen().removePreference(mInstallLocation); } else { @@ -86,17 +86,17 @@ 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); + Settings.Secure.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); + Settings.Secure.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); + Settings.Secure.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); + Settings.Secure.DEFAULT_INSTALL_LOCATION, APP_INSTALL_AUTO); } mInstallLocation.setValue(value); } @@ -143,7 +143,7 @@ public class ApplicationSettings extends PreferenceActivity implements private String getAppInstallLocation() { int selectedLocation = Settings.System.getInt(getContentResolver(), - Settings.System.DEFAULT_INSTALL_LOCATION, APP_INSTALL_AUTO); + Settings.Secure.DEFAULT_INSTALL_LOCATION, APP_INSTALL_AUTO); if (selectedLocation == APP_INSTALL_DEVICE) { return APP_INSTALL_DEVICE_ID; } else if (selectedLocation == APP_INSTALL_SDCARD) { diff --git a/src/com/android/settings/InstalledAppDetails.java b/src/com/android/settings/InstalledAppDetails.java index 41ba49b..52e9844 100644 --- a/src/com/android/settings/InstalledAppDetails.java +++ b/src/com/android/settings/InstalledAppDetails.java @@ -18,6 +18,7 @@ package com.android.settings; +import com.android.internal.content.PackageHelper; import com.android.settings.R; import android.app.Activity; import android.app.ActivityManager; @@ -30,6 +31,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageDataObserver; +import android.content.pm.IPackageManager; import android.content.pm.IPackageMoveObserver; import android.content.pm.IPackageStatsObserver; import android.content.pm.PackageInfo; @@ -40,8 +42,11 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.net.Uri; import android.os.Bundle; import android.os.Handler; +import android.os.IBinder; import android.os.Message; import android.os.RemoteException; +import android.os.ServiceManager; +import android.os.storage.IMountService; import android.text.format.Formatter; import android.util.Log; import java.util.ArrayList; @@ -230,17 +235,36 @@ public class InstalledAppDetails extends Activity implements View.OnClickListene mMoveAppButton.setText(R.string.move_app); } else if ((mAppInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) { mMoveAppButton.setText(R.string.move_app_to_internal); + // Always let apps move to internal storage from sdcard. moveDisable = false; } else { - moveDisable = (mAppInfo.flags & ApplicationInfo.FLAG_FORWARD_LOCK) != 0 || - (mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0; mMoveAppButton.setText(R.string.move_app_to_sdcard); - } - if (pkgInfo != null && pkgInfo.installLocation == - PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY) { - // If an application explicitly specifies install location - // consider that - moveDisable = true; + if ((mAppInfo.flags & ApplicationInfo.FLAG_FORWARD_LOCK) != 0 || + (mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { + moveDisable = true; + } else if (pkgInfo != null) { + if (pkgInfo.installLocation == + PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY) { + // If an application explicitly specifies install location + // consider that + moveDisable = true; + } else if (pkgInfo.installLocation == PackageInfo.INSTALL_LOCATION_UNSPECIFIED) { + IPackageManager ipm = IPackageManager.Stub.asInterface( + ServiceManager.getService("package")); + int loc; + try { + loc = ipm.getInstallLocation(); + } catch (RemoteException e) { + Log.e(TAG, "Is Pakage Manager running?"); + return; + } + if (loc == PackageHelper.APP_INSTALL_EXTERNAL) { + // For apps with no preference and the default value set + // to install on sdcard. + moveDisable = false; + } + } + } } if (moveDisable) { mMoveAppButton.setEnabled(false); |