关于android使用自己的launcher替换默认launcher的方法

关于android使用自己的launcher替换默认launcher的方法

有时候,你可能希望用你自己的launcher程序替换默认的android launcher2和launcher3。而且希望作为系统起来就启动你的launcher程序,而不需要用户选择。

特别是如果你的launcher程序和默认launcher程序共存时,即使你的launcher已经被用户选择为默认启动launcher,突然运行时,你的程序出现crash,那么系统会再次弹出选择哪个launcher进行启动的选择框,而不是直接重启你的launcher程序。

所以解决方法是用你的launcher程序在系统rom编译时,替换默认的launcher。
即在你的Android.mk文件加入:
LOCAL_OVERRIDES_PACKAGES := Launcher2 Launcher3 Home
这条语句即可。
例如
你的launcher程序的Android.mk如下内容:
LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := XXXlauncher
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PREBUILT_JNI_LIBS :=
@lib/arm64-v8a/libBugly.so

LOCAL_OVERRIDES_PACKAGES := Launcher2 Launcher3 Home
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)

关于这一点,其实你在android自动的Launcher3的Android.mk文件中已经能找到类似的语句:
packages/apps/Launcher3
LOCAL_OVERRIDES_PACKAGES := Launcher2

需要注意的是,你加入此语句后,需要make clean或者在out目录中清除上次已经编译的Launcher2和Launcher3的中间文件和apk文件。

当然,由于此LOCAL_MODULE_TAGS := optional, 所以需要在相关的device.mk类似的.mk文件中加入
PRODUCT_PACKAGES += XXXlauncher

当然在out目录中运行 Find . | grep -i launcher可以找到这些中间文件。

另外我的相关培训视频请看:
欢迎观看我发布的各个课程: https://edu.51cto.com/lecturer/8896847.html

另外我的免费的linux各种驱动开发课程如下:
https://edu.51cto.com/course/17138.html

原文地址:https://blog.51cto.com/8906847/2367940

时间: 2024-10-11 00:00:36

关于android使用自己的launcher替换默认launcher的方法的相关文章

修改app的默认设置(包括修改默认launcher)

1.改为自己的launcher ComponentName component = new ComponentName( context.getPackageName(), MainActivity.class.getName());//红色为自己的launcher入口 ComponentName[] components = new ComponentName[] { new ComponentName("com.android.launcher", "com.androi

Android设置默认Launcher

当系统存在多个launcher时,若没有设置默认launcher,开机启动后会弹出提示框,罗列所有launcher,用户选择并设置了默认launcher后,按home键以及以后重启都会进入默认的launcher. 现在,我希望系统能直接就进入我设定的launcher而不是弹出框后选择然后设置 网上大部分的做法就是修改 packages/apps/Provision/src/com/android/DefaultActivity.java 和 framework/base/java/com/and

Android的Launcher启动流程 “Launcher部分启动流程”

研究代码从:AndroidManifest.xml.自定义的Application.java开始. Android系统启动时,系统需要一个Home应用程序来负责将这些应用程序展示出来:也就是该应用的目的在于:Android系统启动后,第一个启动的应用程序.在Android系统中,这个默认的Home应用程序就是Launcher. 要把某个应用程序作为Home,只需要在Android.xml文件中添加一个category: <intent-filter> <action android:na

Android launcher动态Icon的实现方法

在我们的使用Android系统时,经常能看到很多图标上线会标有一些数字,比如短信数量,邮件数量等等,这很好奇, 这是怎么实现的呢?且他会根据实际情况不断的变化,很是神奇呀,默认Android是不支持的,那我们今天就来慢慢的讲讲,他是怎么实现的. 今天介绍两种方法,一种是应用快捷方式, 第二种是修改Iauncher 代码来达到动态icon的效果,配合其他应用来实现. 在应用中发现,普通的应用都可以,这就更神奇了,比如豌豆荚,它会提示你有几个应用要升级,很好奇,研究了一番,发现他是有两个应用图标,我

android java层实现hook替换method

Android上的热修复框架 AndFix 大家都很熟悉了,它的原理实际上很简单: 方法替换--Java层的每一个方法在虚拟机实现里面都对应着一个ArtMethod的结构体,只要把原方法的结构体内容替换成新的结构体的内容,在调用原方法的时候,真正执行的指令会是新方法的指令:这样就能实现热修复,详细代码见 AndFix.需要了解Android 虚拟机的方法调用过程才能彻底理解. 众所周知,AndFix是一种 native 的hotfix方案,它的替换过程是用 c 在 native层完成的,但其实,

CENTOS6.2系统日志rsyslog替换默认的日志服务syslog 转载自http://www.phpboy.net/linux/648.html

最近遇到配置centos 6.2的sshd及sftp日志,发现/etc/syslog.conf文件不存在,然后: #rpm -qa | grep syslog 出来的是rsyslog-5.8.10-6.el6.x86_64 然后: #cat /etc/rsyslog.conf 出来的内容几乎和以前的/etc/syslog.conf类似,然后百度,Google得出的结论是: Rsyslog可作为系统自带产品syslog的替代品,目前fedra等多种Unix/Linux系列操作系统已经正式将rsys

修改Android Studio新建工程时repositories的默认配置

个人博客 http://www.milovetingting.cn 修改Android Studio新建工程时repositories的默认配置 前言 由于众所周知的原因,Android Studio中连接google和jcenter的仓库时,会比较慢,较大机率会失败.为解决这个问题,可以设置仓库为阿里云的仓库: maven{ url 'https://maven.aliyun.com/repository/public/' } 或者设置为本地搭建的仓库,如: maven{ url 'http:

Android4.0 Launcher 源码分析2——Launcher入口及Launcher.xml的加载

2.Launcher入口及Launcher.xml的加载 2.1 Launcher入口 1) LauncherApplication 我们在源代码中可以找到LauncherApplication, 它继承了Application类,当整个Launcher启动时,它就是整个程序的入口.我们先来看它们在AndroidManifest.xml中是怎么配置的. 1 <application 2 android:name="com.android.launcher2.LauncherApplicat

【Android】Could not find XXX.apk!的解决方法

昨天在Eclipse中导入一个Android工程后点击运行时出现了Could not find XXX.apk!的错误信息,具体错误提示如下: 到网上搜了好多方法,挨个尝试,最后都没解决但是,重启Eclipse居然好了,    观察发现在bin目录下没有apk文件,可能是因为工程没有完全编译通过无法生成apk,所以project-->clean,然后rebuild就可以了~ 另外可以手动导出无签名的apk然后在导入到模拟器中,对于如何将apk导入到模拟器中可以参考这篇文章: http://wan