前言

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”
添加 <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />

packages\apps\Provision\src\com\android\provision\DefaultActivity.java

onCreate()方法添加

if(SystemProperties.getInt(“persist.sys.defualt.launcher”,0)==0)//一次性使用系统变量,为免后续重复调用

initLauncher();

添加initLauncher()方法.

 public void initLauncher (){String ORIGINAL_LAUNCHER_PACKAGENAME = "com.android.launcher3";//包名String ORIGINAL_LAUNCHER_CLASSNAME = "com.android.launcher3.Launcher"; //类名Intent queryIntent = new Intent();final PackageManager mPm = this.getPackageManager();queryIntent.addCategory(Intent.CATEGORY_HOME);queryIntent.setAction(Intent.ACTION_MAIN);List<ResolveInfo> homeActivities = mPm.queryIntentActivities(queryIntent, 0);if(homeActivities == null) {return ;}ComponentName defaultLauncher = new ComponentName(ORIGINAL_LAUNCHER_PACKAGENAME,ORIGINAL_LAUNCHER_CLASSNAME);int activityNum = homeActivities.size();ComponentName[] set = new ComponentName[activityNum];int defaultMatch = -1;for(int i = 0; i < activityNum; i++){ResolveInfo info = homeActivities.get(i);set[i] = new ComponentName(info.activityInfo.packageName, info.activityInfo.name);if(ORIGINAL_LAUNCHER_CLASSNAME.equals(info.activityInfo.name)&& ORIGINAL_LAUNCHER_PACKAGENAME.equals(info.activityInfo.packageName)){defaultMatch = info.match;}}//if Launcher is not found, do not set anythingif(defaultMatch == -1){return ;}IntentFilter filter = new IntentFilter();filter.addAction(Intent.ACTION_MAIN);filter.addCategory(Intent.CATEGORY_HOME);filter.addCategory(Intent.CATEGORY_DEFAULT);mPm.addPreferredActivity(filter, defaultMatch, set, defaultLauncher);SystemProperties.set("persist.sys.defualt.launcher",String.valueOf(1));}

结语

高通平台8.0版本默认未将SetupWizard 内置,则也可参照mtk code方法修改packages\apps\Provision 中代码即可.

Provision为4.4平台即内置的应用,其他平台皆可使用该方法.

其它参考

Android framework 使用自定的activity取代默认的Launcher界面

转自 https://blog.csdn.net/jkcomkl/article/details/84840733

Android 内置多个launcher 设置默认launcher相关推荐

  1. Android内置多个launcher设置默认launcher

    Android设置默认launcher 前言 高通 code MTK code 结语 前言 launcher因为开机即启动,若添加默认launcher过早则可能导致其他进程崩溃,添加过晚则起不到启动默 ...

  2. Android 13 内置搜狗输入并设置默认输入法

    1.首先内置搜狗输入法app 在目录vendor/rockchip/common/apps 下新建文件夹SougouInput 并将搜狗输入法apk拷贝到SougouInput文件夹下 并在Sougo ...

  3. android+launcher+字体大小,Android设置默认Launcher

    当系统存在多个launcher时,若没有设置默认launcher,开机启动后会弹出提示框,罗列所有launcher,用户选择并设置了默认launcher后,按home键以及以后重启都会进入默认的lau ...

  4. Android (内置)预装应用

    Android (内置)预装应用 参考Android 系统如何预装第三方应用以及常见问题汇集. 系统开机时会进行应用的加载(或者说安装),所以我们大体上来说就是需要把要内置的apk放到指定目录就行.最 ...

  5. android百度输入法源码,Android内置第三方输入法

    Android内置第三方输入法 本篇讲诉如何再安卓源码中内置第三方输入法,并设为默认输入法启动,以及过程中可能引起的一些其他系统Bug处理: 内置输入法关联源码 各第三方输入法ID 以讯飞为例内置方法 ...

  6. Win7下的内置FTP组件的设置详解

    Win7下的内置FTP组件的设置详解 在局域网中共享文件,FTP是比较方便的方案之一.Win7内部集成了FTP,只是设置起来颇费一番功夫.着文以记之. 一.安装FTP组件 由于Win7默认没有安装FT ...

  7. android 截屏 简书,Android 内置应用截屏方法

    Android 中,内置应用如何更好的截屏 在开发系统应用的时候,有时候需要用到截屏,因为 View.getDrawingCache() 截不到状态栏,所以这个方案不理想 这有一个更好的方案,就是用 ...

  8. Android 内置RTSP/RTMP服务器,实现局域网内视频推流与播放

    1. 背景 工作中有一个需求,在同一个局域网内, 需要将Android平板端(车机)上的摄像头上的画面,实时传输到手机上进行播放. 对于这个需求,我们想到了用RTSP/RTMP进行推流,然后在手机端拉 ...

  9. 安卓 linux launcher,关于android使用自己的launcher替换默认launcher的方法

    关于android使用自己的launcher替换默认launcher的方法 发布时间:2020-07-19 19:14:43 来源:51CTO 阅读:1274 作者:GaoNeil 关于android ...

最新文章

  1. Eclipse SDK 4.2.2/Equinox 3.8.2 发布
  2. 注册和登陆与数据库的链接
  3. 经典SQL语句大全、50个常用的sql语句
  4. 【数据竞赛】2020腾讯广告算法大赛冠军方案分享及代码
  5. (转载)NET面向上下文、AOP架构模式(实现)
  6. 移动web开发适配rem
  7. matlab晶闸管整流电路,采用Matlab/Simulink对三相桥式全控整流电路的仿真分析
  8. emr系统 php,完整电子病历系统c#源码
  9. 看我打脸Message Pack
  10. SQL 数据库开发一些精典的代码(转永南)
  11. 常用头文件和一些简单的函数
  12. 华为鸿蒙os2.0beta版发布会,华为发布鸿蒙OS Beta版,华为鸿蒙2.0适应范围以及优势所在...
  13. 雷达图分析法(转载)
  14. C语言运行时间过长假死,解决xcode打开时loading假死的问题
  15. Java工具类实现excel转pdf结果几乎一模一样
  16. 基于jQuery发展历程时间轴特效代码
  17. JavaScript时间格式化
  18. 浏览器不能把文件下载到D盘
  19. 画质最好单机linux游戏,画质最好单机手游推荐 画质超高单机手游下载
  20. [海森推荐]人类相容性:人工智能与控制问题

热门文章

  1. 电路图:飞利浦 15a显示器电源电路图
  2. c语言双人格斗游戏,模拟格斗游戏
  3. DDR2 ip调试问题集合
  4. 14.【Linux】如何在ubuntu18.04下安装Firefox中国版解决Ubuntu与Windows下Firefox账号同步问题(已解决)
  5. 酷派7269_酷派7269手机如何Root详细教程
  6. 太极发送卡片软件_qn卡片版app下载-QN模块卡片版软件 v35_5577安卓网
  7. Cocos Creator 3D麻将尝试 v2.1.1
  8. 使用iTools录屏大师录制iOS设备运行的视频
  9. Vue | Vue.js 组件化基础 - 脚手架
  10. フォラン / JK枪