Android内置多个launcher设置默认launcher
Android设置默认launcher
- 前言
- 高通 code
- MTK code
- 结语
前言
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)//一次性使用系统变量,为免后续重复调用 initLauncher();
添加initLauncher()方法.
public void initLauncher (){String ORIGINAL_LAUNCHER_PACKAGENAME = "com.xxx.ilauncher";//包名String ORIGINAL_LAUNCHER_CLASSNAME = "com.xxx.ilauncher.MainActivity"; //类名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内置多个launcher设置默认launcher相关推荐
- Android 内置多个launcher 设置默认launcher
前言 launcher因为开机即启动,若添加默认launcher过早则可能导致其他进程崩溃,添加过晚则起不到启动默认 设置的效果且会弹出选择launcher的提示框. 查看了一些其他的修改方法,均需在 ...
- Android 13 内置搜狗输入并设置默认输入法
1.首先内置搜狗输入法app 在目录vendor/rockchip/common/apps 下新建文件夹SougouInput 并将搜狗输入法apk拷贝到SougouInput文件夹下 并在Sougo ...
- android+launcher+字体大小,Android设置默认Launcher
当系统存在多个launcher时,若没有设置默认launcher,开机启动后会弹出提示框,罗列所有launcher,用户选择并设置了默认launcher后,按home键以及以后重启都会进入默认的lau ...
- Android (内置)预装应用
Android (内置)预装应用 参考Android 系统如何预装第三方应用以及常见问题汇集. 系统开机时会进行应用的加载(或者说安装),所以我们大体上来说就是需要把要内置的apk放到指定目录就行.最 ...
- android百度输入法源码,Android内置第三方输入法
Android内置第三方输入法 本篇讲诉如何再安卓源码中内置第三方输入法,并设为默认输入法启动,以及过程中可能引起的一些其他系统Bug处理: 内置输入法关联源码 各第三方输入法ID 以讯飞为例内置方法 ...
- Win7下的内置FTP组件的设置详解
Win7下的内置FTP组件的设置详解 在局域网中共享文件,FTP是比较方便的方案之一.Win7内部集成了FTP,只是设置起来颇费一番功夫.着文以记之. 一.安装FTP组件 由于Win7默认没有安装FT ...
- android 截屏 简书,Android 内置应用截屏方法
Android 中,内置应用如何更好的截屏 在开发系统应用的时候,有时候需要用到截屏,因为 View.getDrawingCache() 截不到状态栏,所以这个方案不理想 这有一个更好的方案,就是用 ...
- Android 内置RTSP/RTMP服务器,实现局域网内视频推流与播放
1. 背景 工作中有一个需求,在同一个局域网内, 需要将Android平板端(车机)上的摄像头上的画面,实时传输到手机上进行播放. 对于这个需求,我们想到了用RTSP/RTMP进行推流,然后在手机端拉 ...
- 安卓 linux launcher,关于android使用自己的launcher替换默认launcher的方法
关于android使用自己的launcher替换默认launcher的方法 发布时间:2020-07-19 19:14:43 来源:51CTO 阅读:1274 作者:GaoNeil 关于android ...
最新文章
- HashSet中的add()方法( 五 )(详尽版)
- 十一月工作小记--上线前的冲刺
- 为特定用户创建监牢 chroot
- mockito 外部接口_【IDEA开发SpringBoot2.0】使用Mockito进行常规接口测试#05
- Linux免设置路由端口映射,2014/04/01 演示中设置linux路由器、端口过滤的使用、路由设置...
- SQL Server大量数据秒级插入/新增/删除
- java word转html 空指针_Windows 内核漏洞学习—空指针解引用
- Linux安装配置redis 、启动redis、redis设置密码
- 你必须知道:localStorage、sessionStorage 和 Cookie 区别在什么地方
- 学习React基本渲染数据操作(-)
- YOLO算法原理详解
- 流水灯程序总结:关于Crol和cror的用法
- svc预测概率_Kaggle平台Titanic生存率预测项目(TOP3%)
- FreeKD:Free-direction Knowledge Distillation for Graph Neural Networks
- html播放h265,Web 播放 H.265视频
- 学习一下怎么加入自己的图片,用QQShow做一下试验~~~~~~~~~~
- 【Unity3D】UGUI之Toggle
- python编写米字格的步骤_1米字格制作步骤
- Excel常用技巧(1)——经纬度度分秒转换十进制度格式
- what's the meaning of Shell?
热门文章
- 局域网限速软件_百度网盘竟良心发现,下载不再限速?
- 赤兔WiFi分销小程序源码,一键连接wifi小程序开发wifi大师软件源码
- EC20、EC600s-CN 短信坑
- 中国培训行业营销模式与发展对策建议报告2022版
- 迅捷PDF分割器如何将PDF拆分为多个文档
- socket接口测试工具_接口测试是什么?如何做好接口测试?
- JetBrains公司系列IDE开发工具通用初始配置推荐(Android Studio、InterlliJ、PHPStorm、CLion、Webstorm等)
- C语言程序——字符的输入和输出
- 常用JDBC数据库驱动包和类名
- centos异常,报错:Unmount and run xfs_repair