



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序员MM的自白:磨人小妖精之安卓碎片化文/腾讯优测 章婉霞除了crash问题,Android平台的碎片化越来越受到移动开发的关注,且不谈支持Android系统的移动设备早已过万款,屏幕、品牌以及传感器等方面的碎片化问题也困扰着开发者。初级Android的开发人员经常关心的问题就是开发的应用能不能在需求的设备上正常运行。为什么我没有说所有设备呢?长期盘踞各Android设备市场份额或市场关注度榜单前十位,被大家熟知的品牌,它们ROM的个性化都足以让人眼花缭乱了,更何况在如今“乱世”里那些七零八落的机型了。想要做更全面的自动化机型测试,破解兼容问题,腾讯优测是很好的选择。最近笔者在做Launcher上图标的清理,接到这个需求的时候,内心是感到轻松的,感觉查询需要删除的图标然后删除不就OK了。但事实证明,我还真是很年轻呢。Launcher个性化我们都知道,Android源码中有Google做的原生Launcher。在2.1及之前的版本中,使用com.android.launcher;2.2至4.3版本使用的是com.android.launcher2;4.4版本开始则使用com.android.launcher3。为了探究一下不同机型的Launcher应用,我分别查看了五部手机,结果如下:型号系统版本Launcher包名1三星I90824.1.2com.sec.android.app.launcher2华为G6064.0.3com.huawei.android.launcher3HTC T328W4.0.3com.htc.launcher4努比亚Z9 Mini5.0.2cn.nubia.launcher5锤子 T14.4.2com.android.launcher3除了锤子使用了原生的Launcher外,其他四个机型都经过了个性化再开发。在实际操作中也可以发现,对图标上的操作响应也不尽相同。对于点击Home键后有“应用”图标的Launcher,长按应用并拖动可在桌面上创建快捷方式。而没有“应用”图标的Launcher,长按加拖动则只能实现应用图标的移动。应用要创建和删除自己的快捷方式图标只需发送如下两个Intent即可:com.android.launcher.action.INSTALL_SHORTCUTcom.android.launcher.action.UNINSTALL_SHORTCUT同时需要在AndroidManifest.xml中添加如下两个权限:android:name=com.android.launcher.permission.INSTALL_SHORTCUTandroid:name=com.android.launcher.permission.UNINSTALL_SHORTCUT而第三方应用要对Launcher上其他应用的快捷方式图标进行删除,最简单粗暴的方式是直接从数据库里删除,当然我们并不推荐,即便发送删除的Intent也需要获知该图标在Launcher保存信息的数据库launcher.db中的一条具有独特性的信息。接下来我们看看launcher.db数据库是不是像网络上说的那般,favorites表中保存着图标信息。数据库个性化从导出launcher.db来看,上述表中的五部手机大部分都在favorites表中保存图标信息,三星I9082则在favorites中只保存主桌面图标,其他应用图标保存在favorites_normal表中。而各机型launcher.db中存放的数据及形式也有所区别,详细情况见如下两图:图1-1 努比亚launcher.db数据图1-2 三星I9082 launcher.db数据权限个性化一旦要对Launcher数据库有访问,至少需要有对数据库的读权限,而要进行操作,权限要求会更高(写数据库的权限安全等级一般都是signatureOrSystem)。据不完全统计,要适配市场上大部分的设备,如下所列出的一大长串权限是免不了的,而且肯定还有不少漏网之鱼。android:name=com.android.launcher.permission.READ_SETTINGS android:name=com.android.launcher.permission.WRITE_SETTINGS android:name=com.android.launcher2.permission.READ_SETTINGS android:name=com.android.launcher2.permission.WRITE_SETTINGS android:name=com.android.launcher3.permission.READ_SETTINGS android:name=com.android.launcher3.permission.WRITE_SETTINGS android:name=cn.nubia.launcher.permission.READ_SETTINGS android:name=cn.nubia.launcher.permission.WRITE_SETTINGS android:name=org.adw.launcher.permission.READ_SETTINGSandroid:name=org.adw.launcher.permission.WRITE_SETTINGSandroid:name=com.htc.launcher.permission.READ_SETTINGSandroid:name=com.htc.launcher.permission.WRITE_SETTINGSandroid:name=com.qihoo360.launcher.permission.READ_SETTINGSandroid:name=com.qihoo360.launcher.permission.WRITE_SETTINGSandroid:name=com.lge.launcher.permission.READ_SETTINGSandroid:name=com.lge.launcher.permission.WRITE_SETTINGSandroid:name=net.qihoo.launcher.permission.READ_SETTINGSandroid:name=net.qihoo.launcher.permission.WRITE_SETTINGSandroid:name=org.adwfreak.launcher.permission.READ_SETTINGSandroid:name=org.adwfreak.launcher.permission.WRITE_SETTINGSandroid:name=org.adw.launcher_donut.permission.READ_SETTINGSandroid:name=org.adw.launcher_donut.permission.WRITE_SETTINGSandroid:name=com.huawei.launcher3.permission.READ_SETTINGSandroid:name=com.huawei.launcher3.permission.WRITE_SETTINGSandroid:name=com.fede.launcher.permission.READ_SETTINGSandroid:name=com.fede.launcher.permission.WRITE_SETTINGSandroid:name=com.sec.android.app.twlauncher.settings.READ_SETTINGSandroid:name=com.sec.android.app.twlauncher.settings.WRITE_SETTINGSandroid:name=com.anddoes.launcher.permission.READ_SETTINGSandroid:name=com.anddoes.launcher.permission.WRITE_SETTINGSandroid:name=com.tencent.qqlauncher.permission.READ_SETTINGSandroid:name=com.tencent.qqlauncher.permission.WRITE_SETTINGSandroid:name=com.huawei.launcher2.permission.READ_SETTINGSandroid:name=com.huawei.launcher2.permission.WRITE_SETTINGSandroid:name=com.android.mylauncher.permission.READ_SETTINGSandroid:name=com.android.mylauncher.permission.WRITE_SETTINGSandroid:name=com.ebproductions.android.launcher.permission.READ_SETTINGS android:name=com.ebproductions.android.launcher.permission.WRITE_SETTINGS android:name=com.oppo.launcher.permission.READ_SETTINGSandroid:name=com.oppo.launcher.permission.WRITE_SETTINGSandroid:name=com.huawei.android.launcher.permission.READ_SETTINGSandroid:name=com.huawei.android.launcher.permission.WRITE_SETTINGSandroid:name=telecom.mdesk.permission.READ_SETTINGSandroid:name=telecom.mdesk.permission.WR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 18590-2025金属和合金的腐蚀点蚀评价指南
- 采购合同模板条款
- 社会责任持续落实承诺函8篇
- 全球服务可靠保证承诺书8篇
- 2025年河北科技工程职业技术大学选聘工作人员52名模拟试卷及一套答案详解
- 2025年浙江省生态环境厅部分直属事业单位招聘7人(第二批)考前自测高频考点模拟试题参考答案详解
- 合规职业个人承诺函6篇
- 2025-2026学年湖北省丹江口市部分学校高一上学期开学考试英语试题(解析版)
- 晨曦中的校园一天的开始写景13篇范文
- 农业产业链金融支持合作协议
- 2025呼和浩特市总工会社会工作者、专职集体协商指导员招聘29人考试参考试题及答案解析
- 第三节 区域联系与区域协调发展教学设计高中地理湘教版2019选择性必修2-湘教版2019
- 2025年评审员在线测评练习题及答案
- 2025贵州黔西南州普安县县直单位、街道考调事业单位工作人员47人考试参考题库及答案解析
- 百日安全无事故活动方案
- 2025走进人工智能2.0
- 2025中新社(北京)国际传播集团有限公司新疆分公司招聘6人考试历年参考题附答案详解
- 天然气公司冬季安全培训课件
- 2025年辽宁沈阳市近海控股集团招聘24人笔试参考题库附带答案详解
- 统编版四年级语文下册第四单元【教材解读】 课件
- 建筑工人安全知识培训课件
评论
0/150
提交评论