文/腾讯优测 章婉霞android
除了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应用,我分别查看了五部手机,结果以下:app
除了锤子使用了原生的Launcher外,其余四个机型都通过了个性化再开发。在实际操做中也能够发现,对图标上的操做响应也不尽相同。
工具
对于点击Home键后有“应用”图标的Launcher,长按应用并拖动可在桌面上建立快捷方式。而没有“应用”图标的Launcher,长按加拖动则只能实现应用图标的移动。测试
应用要建立和删除本身的快捷方式图标只需发送以下两个Intent便可:spa
com.android.launcher.action.INSTALL_SHORTCUT
com.android.launcher.action.UNINSTALL_SHORTCUT
同时须要在AndroidManifest.xml中添加以下两个权限:
android:name="com.android.launcher.permission.INSTALL_SHORTCUT
android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT
而第三方应用要对Launcher上其余应用的快捷方式图标进行删除,最简单粗暴的方式是直接从数据库里删除,固然咱们并不推荐,即使发送删除的Intent也须要获知该图标在Launcher保存信息的数据库launcher.db中的一条具备独特性的信息。
接下来咱们看看launcher.db数据库是否是像网络上说的那般,favorites表中保存着图标信息。
数据库个性化
从导出launcher.db来看,上述表中的五部手机大部分都在favorites表中保存图标信息,三星I9082则在favorites中只保存主桌面图标,其余应用图标保存在favorites_normal表中。而各机型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_SETTINGS"
android:name="org.adw.launcher.permission.WRITE_SETTINGS"
android:name="com.htc.launcher.permission.READ_SETTINGS"
android:name="com.htc.launcher.permission.WRITE_SETTINGS"
android:name="com.qihoo360.launcher.permission.READ_SETTINGS"
android:name="com.qihoo360.launcher.permission.WRITE_SETTINGS"
android:name="com.lge.launcher.permission.READ_SETTINGS"
android:name="com.lge.launcher.permission.WRITE_SETTINGS"
android:name="net.qihoo.launcher.permission.READ_SETTINGS"
android:name="net.qihoo.launcher.permission.WRITE_SETTINGS"
android:name="org.adwfreak.launcher.permission.READ_SETTINGS"
android:name="org.adwfreak.launcher.permission.WRITE_SETTINGS"
android:name="org.adw.launcher_donut.permission.READ_SETTINGS"
android:name="org.adw.launcher_donut.permission.WRITE_SETTINGS"
android:name="com.huawei.launcher3.permission.READ_SETTINGS"
android:name="com.huawei.launcher3.permission.WRITE_SETTINGS"
android:name="com.fede.launcher.permission.READ_SETTINGS"
android:name="com.fede.launcher.permission.WRITE_SETTINGS"
android:name="com.sec.android.app.twlauncher.settings.READ_SETTINGS"
android:name="com.sec.android.app.twlauncher.settings.WRITE_SETTINGS"
android:name="com.anddoes.launcher.permission.READ_SETTINGS"
android:name="com.anddoes.launcher.permission.WRITE_SETTINGS"
android:name="com.tencent.qqlauncher.permission.READ_SETTINGS"
android:name="com.tencent.qqlauncher.permission.WRITE_SETTINGS"
android:name="com.huawei.launcher2.permission.READ_SETTINGS"
android:name="com.huawei.launcher2.permission.WRITE_SETTINGS"
android:name="com.android.mylauncher.permission.READ_SETTINGS"
android:name="com.android.mylauncher.permission.WRITE_SETTINGS"
android:name="com.ebproductions.android.launcher.permission.READ_SETTINGS"
android:name="com.ebproductions.android.launcher.permission.WRITE_SETTINGS"
android:name="com.oppo.launcher.permission.READ_SETTINGS"
android:name="com.oppo.launcher.permission.WRITE_SETTINGS"
android:name="com.huawei.android.launcher.permission.READ_SETTINGS"
android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"
android:name="telecom.mdesk.permission.READ_SETTINGS"
android:name="telecom.mdesk.permission.WRITE_SETTINGS"
仅一个Launcher就这么任性,千千万万的Android开发人员,多少次问本身:
爱卓,我怕了吗?
眼泪,我忘了吗?
产品催,机型差
应用怎么开发???
不论是创业公司仍是具有必定规模的企业,为了开发和测试本身的应用,采购覆盖Android市场80%甚至更高的机型,是一件既不现实也不容易更不合理的事。想要为开发者压缩时间成本,为公司节省采购和管理成本,不妨尝试一下腾讯优测,会让你获得意想不到的效果哦,这但是程序员MM发自心里地呐喊~
想了解更多干货,欢迎关注腾讯优测微信号:优测网(wxutest)
腾讯优测:
腾讯优测是备受客户信赖的移动云测试平台,为应用、游戏,H5混合应用的研发团队提供产品质量检测与问题解决服务。不只在线上平台提供「云手机远程操控与调试」、「自动化全面兼容性测试」、「APK源码级缺陷性分析」等多种质量检测工具,更为VIP客户配备专家团队提供定制化综合测试解决方案。真机实验室配备上千款手机,覆盖市面98%主流机型,7*24小时在线运行,覆盖亿级用户。