android开机默认打开指定程序,android 开机默认进入指定Launcher
这里总结下我研究这个需求,想出的两种解决方案。
第一种方法最简单暴力只要修改apk的AndroidManifest直接上源码
这里就加了一句android:priority=”2”,这样在开机和按HOME键时候系统intent判断到category.HOME属性后如果有多个此属性apk,则会进入ResolverActivity让用户选择。当你定义了此优先级它其他未定义的都默认为0,所以优先进入了你的activity。
第二种方法需要修改framework源码来强制进入你的launcher
首先ActivityManagerService.java中
boolean startHomeActivityLocked(int userId) {
if (mHeadless) {
// Added because none of the other calls to ensureBootCompleted seem to fire
// when running headless.
ensureBootCompleted();
return false;
}
if (mFactoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL
&& mTopAction == null) {
// We are running in factory test mode, but unable to find
// the factory test app, so just sit around displaying the
// error message and don't try to start anything.
return false;
}
Intent intent = getHomeIntent();
ActivityInfo aInfo =
resolveActivityInfo(intent, STOCK_PM_FLAGS, userId);
if (aInfo != null) {
//add wwd start
PackageManager pm = mContext.getPackageManager();
Intent newintent = new Intent(Intent.ACTION_MAIN);
newintent.addCategory(Intent.CATEGORY_HOME);
List resolveInfoList = pm.queryIntentActivities(newintent, 0);
//判断带有Intent.CATEGORY_HOME标签的所有activity中如果有你指定的activity则替换
if(resolveInfoList != null){
int size = resolveInfoList.size();
for(int i = 0; i < size; i++){
ResolveInfo rInfo = resolveInfoList.get(i);
if(rInfo.activityInfo.name.equals("com.android.launcher3.Launcher")){
aInfo = rInfo.activityInfo;
}
}
}
//add wwd stop
intent.setComponent(new ComponentName(
aInfo.applicationInfo.packageName, aInfo.name));
// Don't do this if the home app is currently being
// instrumented.
aInfo = new ActivityInfo(aInfo);
aInfo.applicationInfo = getAppInfoForUser(aInfo.applicationInfo, userId);
ProcessRecord app = getProcessRecordLocked(aInfo.processName,
aInfo.applicationInfo.uid, true);
if (app == null || app.instrumentationClass == null) {
intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK);
//这里启动你已替换过的activity
mStackSupervisor.startHomeActivity(intent, aInfo);
}
}
return true;
}
这样就把开机homeactivity替换成你想要启动的luncher了。
下面在修改按home键强制退回的launcher
PhoneWindowManager.java
public void init(Context context, IWindowManager windowManager,
WindowManagerFuncs windowManagerFuncs) {
......
mHomeIntent = new Intent(Intent.ACTION_MAIN, null);
mHomeIntent.addCategory(Intent.CATEGORY_HOME);
//add wwd start
ComponentName mHomecom = new ComponentName("com.android.launcher3", "com.android.launcher3.Launcher");
mHomeIntent.setComponent(mHomecom);
//add wwd stop
mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
......
}
这里添加以上两句让home强制跳转指定launcher就好了。
android开机默认打开指定程序,android 开机默认进入指定Launcher相关推荐
- Android Studio 设置打开layout.xml文件的默认视图
Android Studio 设置打开layout.xml文件的默认视图 Android Studio 设置打开layout.xml文件的默认视图 androd studio 在使用的时候打开我们自己 ...
- ubuntu设置开机启动图形应用程序,替换默认图形桌面
一.前言 无论你想要在ubuntu 12.04(11.10适用)开机启动图形程序,或者非图形程序,相信这篇文章能帮上大忙. 我将根据我的需求讲解我的做法,并解释为什么这么做.完了以后,各位看官根据自己 ...
- android打包apk不能安装程序,Android Studio 打包apk后应用未安装
本文转载地址 http://blog.csdn.net/sinat_14849739/article/details/76383281 前言 Android 要求所有 APK 必须先使用证书进行数字签 ...
- android应用内打开apk,【Android】点击应用进而打开base.apk的调用流程再分析
点击一个应用的时候,会加载其对应的base.apk,我们在AssetManager类的addAssetPath方法中添加堆栈打印, 其调用堆栈为 android.content.res.AssetMa ...
- html默认office打开如何更改,怎么设置office默认打开方式,修改office的默认打开方式...
Q1:怎么把office软件设置为默认的文档打开方式 选中文件,再按shift再按鼠标右键,选打开方式,选择程序,把下方始终使用选择的程序打开这种文件选上,选择office,确定就可以了 Q2:怎样设 ...
- html查看器更改默认打开方式,初学者如何设置默认打开方式
现在的电脑里,图片查看器.音乐播放器和视频播放器有时都不止装了一个,因此在打开这些媒体文件时总是会默认用某个软件打开,但有些时候默认打开方式并不是自己想要的,这就需要自己动手修改了.这些默认打开方式一 ...
- android 启动浏览器下载应用程序,Android从浏览器中打开本地应用
开发中遇到的一些问题特此记录: 1.应用场景一 在浏览器中要求直接打开到安装的应用中 需要在该应用的启动Activity 清单文件中进行配置 android:host="com.baidu ...
- android检测是否跳出应用程序,android – 检测应用程序何时打开/恢复
d60402 here提供的答案以及Hanno Binder使用 Application.registerActivityLifecycleCallbacks()注册活动回调的建议使我得到了这个解决方 ...
- android判断是否安装应用程序,android如何判断一个软件是否安装以及打开手机应用商店...
private boolean isAppInstalled() { PackageInfo packageInfo; try { packageInfo = this.getPackageManag ...
最新文章
- TCP/IP详解--第七章
- 中粮国际对话国际农民丰收节贸易会 谋定国际农贸现代化
- Netbeans自定义mode
- matlab程序聚类预测机器学习
- 解决pom文件第一行报错(unknown)-亲测有效
- Eclipse安装UML 插件
- C#/ASP.NET完善的DBHelper,配套Model生成器
- 如何用SEGGER工具烧写程序,烧写地址详解
- 亿阳信通:结盟微软深化四轮驱动战略
- 交换机基础命令(理解交换机基本工作原理)
- InvalidOptions: Requested option conflicts with current storage engine option for directoryPerDB
- 【t101】小明搬家
- 【聆思CSK6 视觉AI开发套件试用】AI控制直流电机转速接口打通
- WPF自学手册-读书笔记(二)心法
- C语言前驱和后继字母,数据结构(c语言)3.ppt
- Fast DDS入门二、Fast DDS在Windows平台的编译安装
- 第六届蓝桥杯大赛个人赛省赛Java B组真题
- 安徽外国语学院计算机信息管理,2021年安徽外国语学院录取结果查询网址入口及录取结果公布时间...
- loj #2509. 「AHOI / HNOI2018」排列
- MATLAB 2021b详解
热门文章
- Gmail 中出现紫字的怪现象
- 频域串联滞后校正matlab,控制工程基础(基于Matlab的线性系统串联校正)
- 计算机基础为什么要学word,计算机基础中word教学探讨
- 还在自己手写请假流程吗?Activiti7帮你快速请假!!!
- 假如你想成为全栈工程师…
- VS code编辑器出现open a floder or workspace... (File -> Open Folder)错误
- Matlab安装失败问题
- SpringBoot、VUE基于国产环境适配开发(国产系统、国产数据库、国产中间件)
- 使用OpenCV读取摄像头图像并显示
- win10上Steam闪退