博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 配置framework 使应用首选安装在SD卡
阅读量:6826 次
发布时间:2019-06-26

本文共 627 字,大约阅读时间需要 2 分钟。

hot3.png

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

你可能感兴趣的文章
修改sql数据库文件 物理文件名称
查看>>
关于PHP 时区错误的问题
查看>>
ScriptManager.RegisterStartupScript失效的解决方案
查看>>
vsftpd 添加用户
查看>>
运行 python 脚本错误:urllib2.URLErroe:<urlopen error unknown url type : https>
查看>>
递归方法
查看>>
Sonar+maven+jenkins集成,Java代码走查
查看>>
浏览器渲染页过程描述
查看>>
js中点击返回顶部
查看>>
Gtest源码剖析:1.实现一个超级简单的测试框架xtest
查看>>
UEditor 是一套开源的在线HTML编辑器
查看>>
Linux 命令简介
查看>>
第三方模块的安装
查看>>
Terracotta中锁与性能的问题
查看>>
遇到Linux系统安装时窗口过大,按钮点不到,该怎么解决
查看>>
Xamarin开发Android笔记:TextView行间距设定
查看>>
js 判断输入是否为正整数
查看>>
git学习资料包
查看>>
CSS3
查看>>
myEclipse配置jdk1.7
查看>>