Android——APK 安装位置管理
16lz
2021-12-04
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中:
最终的安装位置 由 apk 自身属性决定!当apk的无属性或者设置为auto 此时再由系统决定安装位置!
更多相关文章
- inputType属性
- Android属性动画之XML定义方式
- Android(安卓)SDK 的快速安装方法
- Android(安卓)编辑框(EditText)属性学习
- Intellij IDEA + Android(安卓)SDK + Genymotion Emulator打造最
- Android(安卓)EditText属性总结
- android sdk+eclipse+adt 配置与开发
- android:inputType 属性及其支持的取值
- android 横竖屏限制如何配置