asysbang

 找回密码
 立即注册
查看: 4877|回复: 0
打印 上一主题 下一主题

配置应用首选安装位置

[复制链接]

513

主题

2

好友

6404

积分

管理员

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
#
发表于 2013-5-31 11:38:08 |只看该作者 |正序浏览
转载请注明:www.asysbang.com

实际上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




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|aSys-帮 ( 京ICP备13033689号 )

GMT+8, 2024-10-5 17:26 , Processed in 0.045811 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部