前言
launcher因为开机即启动,若添加默认launcher过早则可能导致其他进程崩溃,添加过晚则起不到启动默认设置的效果且会弹出选择launcher的提示框.
查看了一些其他的修改方法,均需在ActivityManagerService.java的startHomeActivityLocked添加默认启动,但是发现添加后,若系统存在多个launcher apk,则仍然会弹出launcher选择提示框.经过几天折腾,发现一个比较简便且改动不大的方法.
主要思路是发现某些OS自带的apk也添加了
<category android:name="android.intent.category.HOME" />
的响应,且设置了 priority=“1”,则可以保证该应用在Launcher启动前就运行起来.
以下为具体code修改.
高通 code
7.1版本
若有编译 SetupWizard则使用此方法,无则使用 mtk code方法.
vendor\qcom\proprietary\qrdplus\Extension\apps\SetupWizard\src\com\qualcomm\qti\setupwizard\SetupWelcomeActivity.java
private static final String ORIGINAL_LAUNCHER_PACKAGENAME = "com.android.launcher3";//设置为定制的包名
private static final String ORIGINAL_LAUNCHER_CLASSNAME = "com.android.launcher3.Launcher";//设置为定制的类名
MTK code
6.0版本
packages\apps\Provision\AndroidManifest.xml
添加 android:sharedUserId=“android.uid.system”
packages\apps\Provision\src\com\android\provision\DefaultActivity.java
onCreate()方法添加
if(SystemProperties.getInt("persist.sys.defualt.launcher",0)==0)//一次性使用系统变量,为免后续重复

本文探讨了如何在Android系统中避免开机时选择launcher提示框的问题。通过分析高通和MTK平台的不同代码实现,提出了一种改动较小的方法。在高通7.1版本中,可以通过SetupWizard进行设置,而在MTK 6.0版本中,可以在Provision应用的AndroidManifest.xml中添加共享用户ID,并在DefaultActivity中初始化launcher。
最低0.47元/天 解锁文章
1315





