APK:

在AndroidManifest.xml文件添加android:installLocation属性

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.ray"android:installLocation="auto"android:versionCode="1"android:versionName="1.0">


android:installLocation这个属性设置的是默认安装位置, 共有三个有效值,auto、internalOnly、preferExternal

对应表

auto 表示自动,由系统决定安装位置

internalOnly 安装在手机内存

preferExternal 安装在外部存储中


系统:

PackageManagerService.java中设置 /获取installlocation:

public boolean setInstallLocation(int loc) {        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS,                null);        if (getInstallLocation() == loc) {            return true;        }        if (loc == PackageHelper.APP_INSTALL_AUTO || loc == PackageHelper.APP_INSTALL_INTERNAL                || loc == PackageHelper.APP_INSTALL_EXTERNAL) {            android.provider.Settings.Global.putInt(mContext.getContentResolver(),                    android.provider.Settings.Global.DEFAULT_INSTALL_LOCATION, loc);            return true;        }        return false;   }    public int getInstallLocation() {        return android.provider.Settings.Global.getInt(mContext.getContentResolver(),                android.provider.Settings.Global.DEFAULT_INSTALL_LOCATION,                PackageHelper.APP_INSTALL_AUTO);    }


其中核心设置为:

android.provider.Settings.Global.putInt(mContext.getContentResolver()

,android.provider.Settings.Global.DEFAULT_INSTALL_LOCATION,type);


type为位置类型分别对应为PackageHelper.java中的:

// App installation location settings values    public static final int APP_INSTALL_AUTO = 0;    public static final int APP_INSTALL_INTERNAL = 1;    public static final int APP_INSTALL_EXTERNAL = 2;


PackageManagerService.java中:

private int installLocationPolicy(PackageInfoLite pkgLite, int flags);

最终的安装位置 由 apk 自身属性决定!当apk的无属性或者设置为auto 此时再由系统决定安装位置!



更多相关文章

  1. inputType属性
  2. Android属性动画之XML定义方式
  3. Android(安卓)SDK 的快速安装方法
  4. Android(安卓)编辑框(EditText)属性学习
  5. Intellij IDEA + Android(安卓)SDK + Genymotion Emulator打造最
  6. Android(安卓)EditText属性总结
  7. android sdk+eclipse+adt 配置与开发
  8. android:inputType 属性及其支持的取值
  9. android 横竖屏限制如何配置

随机推荐

  1. 在模仿中精进数据可视化06:常见抽象地图的
  2. Python+Dash快速web应用开发——页面布局
  3. 这个Pandas函数可以自动爬取Web图表
  4. Linux常用命令有哪些?
  5. 从零到一学懂区块链(3):地址
  6. 用Excel做相关性分析
  7. 世界是自己的。人来人往,车水马龙。我只是
  8. 从零到一学懂区块链(4):密钥
  9. 用Excel做直方图(1):随机数发生器
  10. 路遥作品读后感