本文共 627 字,大约阅读时间需要 2 分钟。
实际上android2.2的设置里面就有个“首选安装位置”了,但是一直没有正式打开,不知道为什么 在applications_settings下面有app_install_location这个ListPreference 查看代码发现settings只是去读写secure的数据库。。。那什么地方使用这个数据库的值呢? 在frameworks/base/services/java/com/android/server/pm/PackageManagerService.java中有getInstallLocation但是只有命令行的pm调用。。。 于是查看apk安装的代码 在installPackageLI函数中onSd这个值根本没有去判断installLocation,只是看了apk的AndroidManifest中定义的flag 尝试把onSd强制设置成true,发现应用可以默认安装到sd卡上了~_~ 但是发现不能移动到内存中了,怀疑和forwardLocked这个判断有关,还需要分析move的代码。。。。。 把movepackage中的判断也都屏蔽掉,发现可以移动到内存中,但是就不能再移动到sd卡中了。。。 看来还要改是否可以移动应用的判断逻辑。。。 PS:记得很久之前看这个问题时,如果移动失败可能需要去修改kernal的一个flag 转载于:https://my.oschina.net/f839903061/blog/136526