Android 7.1.2 源码修改,使用自己的 app 作为默认桌面,不弹出桌面选择弹窗

本文介绍了如何在Android 7.1.2系统中通过源码修改,使自己的桌面应用成为默认且不出现桌面选择弹窗。在不修改源码的情况下,如果应用崩溃会触发桌面选择。解决方案是判断系统中是否存在自定义应用,如果存在则只显示该应用,否则使用系统默认。主要修改了适配器的数据更新逻辑,并提供了源码修改位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:使用自己开发的桌面 app 作为默认,不再出现桌面选择

在不修改源码前提下,可以设置自己的app为桌面,但是如果自己的应用出现崩溃,则在 Android 启动机制下会弹出桌面选择弹窗,如果在定制的系统中,这个是不能接受的,但本身在开发也需要使用默认 launcher 进行其他的一些设置,所以需要保留多个桌面启动器。

1、解决思路

在没有自己的启动器时候,由系统自己处理,即弹出弹窗选择或者使用自带的 Launcher3 桌面;在自己app存在情况下,使用自身app,拒绝弹窗选择。

2、分析

从启动器弹窗我们可以知道,假如只有一个启动器的情况下,是不会出现列表选择的,直接作为默认,所以我们只需判断已安装应用是否存在我们自身的app,如果存在,则清空显示的列表,只添加我们的app进去,如果不存在,默认处理。

3、处理

修改的源码为 ResolverActivity.class 代码位置 /frameworks/base/core/java/com/android/internal/app/ResolverActivity.java ,我这里只处理 Android 7.1.2,其他版本可能存在差异,但处理逻辑是一致的。

首先定位到适配器 ResolveListAdapter,直接在它数据更新的地方做我们的数据处理,修改的方法是 private void rebuildList() (重建数据源),修改如下:

	private void rebuildList() {
   
   
            //··· 省略代码
            // Clear the value of mOtherProfile from previous call.
            mOtherProfile = null;
            mDisplayList.clear();
            //第一次进来一定是null,可以看 onCreate 的调用
            if (mBaseResolveList != null) {
   
   
                currentResolveList = mOrigResolveList = new ArrayList<>()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值