首页 > 代码库 > Android修改应用的默认安装位置

Android修改应用的默认安装位置

<span style="font-size:14px;"><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Google默认的PackageManager,会读取应用AndroidManifest.xml的对应定义</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">installLocation</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">:</span></span>


规则如下:

1.如果没有定义安装位置,表示安装在手机内存上;

2. android:installLocation = "auto",先查看手机内存是否足够,如果够就安装在手机内存上,不够就安装在T 卡上;

3. android:installLocation = "internalOnly",表示安装在手机内存上;

4. android:installLocation = "preferExternal" ,表示安装在 T 卡上;


如何在设置中增加“选取应用安装位置”的功能,让用户选择默认的安装位置?

修改如下文件:

<span style="font-size:14px;">frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java</span>

做以下修改:

<span style="font-size:14px;">loadSetting(stmt, Global.SET_INSTALL_LOCATION, 0);</span>

改为:

<span style="font-size:14px;">loadSetting(stmt, Secure.SET_INSTALL_LOCATION, 1);</span>



<span style="font-size:14px;">loadSetting(stmt, Settings.Secure.SET_INSTALL_LOCATION, 0);</span>

改为:
<span style="font-size:14px;">loadSetting(stmt, Settings.Secure.SET_INSTALL_LOCATION, 1);</span>

这样修改之后,在设置>应用中会出现“选取应用安装位置”的功能,不过无论在这里选择什么,对于应用中AndroidManifest.xml文件中声明

<span style="font-size:14px;">android:installLocation = "internalOnly"</span>

的,该apk 都会安装到手机上,这样做的好处是避免程序运行错误,因为定义android:installLocation = "internalOnly" 的 apk 一般要安装到手机内存上才能正常运行。

Android修改应用的默认安装位置