<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 一般要安装到手机内存上才能正常运行。
时间: 2024-10-17 22:02:00