Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a95f926 authored by Suchi Amalapurapu's avatar Suchi Amalapurapu Committed by Android (Google) Code Review
Browse files

Merge "Fix 2579461 Disable move when manifest option for install location is...

Merge "Fix 2579461 Disable move when manifest option for install location is unspecified and install location is auto/internal" into froyo
parents 0557a706 4056459e
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -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) {
+32 −8
Original line number Diff line number Diff line
@@ -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 ==
            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);