【安卓13】谷歌桌面Launcher3屏蔽全部应用里面的部分app

1、需求

我们在做谷歌桌面时,移植了一些我们自己的应用,但是有些应用是服务型的app,不需要显示在主页,要隐藏掉

2、解决方案
方法1:

解决办法很简单,阅读源码发现,谷歌桌面添加全部应用的源码在这里com/android/launcher3/model/AllAppsList.java
在这里插入图片描述
在这个add 方法里,根据mAppFilter里面的方法去过滤掉不需要add 的应用
在这里插入图片描述
这个类读取了一个数组文件R.array.filtered_components,这个文件里面定义了需要过滤的组件,我这里查看源码这个数组文件是空的,没有过滤任何app,这个文件在res/values/config.xml里面定义

可以在这里添加要过滤的包名

    <!-- 定义一个字符串数组,用于存储需要过滤的组件名称 --><string-array name="filtered_components"><!-- 使用完整的类名,或者包名+类名的形式 --><item>com.example.package.SomeActivity</item><item>com.example.package.AnotherService</item><item>com.example.package.YetAnotherReceiver</item><!-- 添加更多需要过滤的组件 --></string-array>
方法2

直接在AppFilter.java类里面过滤

    private final Set<ComponentName> mFilteredComponents;private List<String> mFilterAppList = null;public AppFilter(Context context) {mFilteredComponents = Arrays.stream(context.getResources().getStringArray(R.array.filtered_components)).map(ComponentName::unflattenFromString).collect(Collectors.toSet());mFilterAppList.add("你要过滤的包名");}public boolean shouldShowApp(ComponentName app) {if (mFilterAppList != null && mFilterAppList.contains(app.getPackageName())) {return false;}return !mFilteredComponents.contains(app);}
方法3

这个方法要修改编译文件,大家可不看,这里只提供一个思路,不同的供应商修改不一样
源码目录新增一个黑名单文件,修改编译MK文件,在MK文件里面将这个黑名单文件copy到out输出目录,比如/vendor/etc/google_hide_apk_list.txt,这样在编译固件的时候,系统的这个目录会包含这个文件,这样就可以在Launcher3里面读取这个文件找到要过滤的包名

public class AppFilter {private final Set<ComponentName> mFilteredComponents;private List<String> mFilterAppList = null;public AppFilter(Context context) {mFilteredComponents = Arrays.stream(context.getResources().getStringArray(R.array.filtered_components)).map(ComponentName::unflattenFromString).collect(Collectors.toSet());mFilterAppList = getBlackList();}public boolean shouldShowApp(ComponentName app) {if (mFilterAppList != null && mFilterAppList.contains(app.getPackageName())) {return false;}return !mFilteredComponents.contains(app);}private List<String> getBlackList() {mFilterAppList = new ArrayList<>();try (BufferedReader bfd = new BufferedReader(new FileReader("/vendor/etc/google_hide_apk_list.txt"))) {String retain;while ((retain = bfd.readLine()) != null) {mFilterAppList.add(retain.trim());if (!TextUtils.isEmpty(retain)){Log.d("AppFilter", "blacklist add packageName: " + retain);}}} catch (IOException e) {e.printStackTrace();}return mFilterAppList;}}
总结

这是常用的几种方法,第二种简单明了,直接在类里面过滤,还有什么疑问可留言沟通

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/5215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7 安装 Puppeteer Google Chrome

由于需要使用到了 Puppeteer 功能&#xff0c;安装了多次失败而告终。最终找到了一个可以安装成功的方式&#xff0c;特此记录下来。 安装 Puppeteer 需要注意 Node.js 版本&#xff0c;我使用的是 16.x cnpm i puppeteer安装 Google Chrome 这里需要注意的一下是&#xff0c;…

使用yolo识别模型对比两张图片并标记不同(2)

上篇文章有漏洞&#xff0c;在这里补充下&#xff0c;比如要识别第二张图相对于第一张图的违建是否拆除了 第一步旋转对其后&#xff0c;图片会有黑色的掩码&#xff0c;如果旋转角度大的话&#xff0c;没识别出来的框可能不是已经拆除了&#xff0c;而是因为黑色掩码遮挡&…

美国经济走向滞胀,鲍威尔或在会议后强调通胀挑战

摩根大通首席市场策略师Marko Kolanovic在一份分析报告中表示&#xff0c;上周美国GDP数据意外下滑&#xff0c;通胀的上行势头也在加剧&#xff0c;对"软着陆"叙事构成压力。这些数据与市场预期之间的反差&#xff0c;表明美国经济可能正走向“滞胀”的方向。 Kola…

数字旅游:通过科技赋能,创新旅游服务模式,提供智能化、个性化的旅游服务,满足游客多元化、个性化的旅游需求

目录 一、数字旅游的概念与内涵 二、科技赋能数字旅游的创新实践 1、大数据技术的应用 2、人工智能技术的应用 3、物联网技术的应用 4、云计算技术的应用 三、智能化、个性化旅游服务的实现路径 1、提升旅游服务的智能化水平 2、实现旅游服务的个性化定制 四、数字旅…

Linux编辑器调试器 gcc/g++ gdb 编译过程及使用讲解

这恋爱呀 我有两不谈 第一异性不谈 因为我们性别不一样 我知道的她不知道相处起来太累 第二同性不谈 因为我们性别一样 我知道的他也知道相处起来太无聊了 –❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀-正文开始-❀–❀–❀–❀–❀–❀–…

【介绍下Android开发环境的搭建】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

带噪声估计的KF

带噪声估计的KF x ^ ( k ∣ k − 1 ) A x ^ q ( k − 1 ∣ k − 1 ) x ^ q ( k ∣ k − 1 ) x ^ ( k ∣ k − 1 ) q ^ ( k − 1 ) (92、94) \begin{aligned} \hat{x}(k|k-1)&A\hat{x}_{q}(k-1|k-1) \\ \hat{x}_{q}(k|k-1)&\hat{x}(k|k-1)\hat{q}(k-1) \end{aligned}…

什么是域名解析?域名解析的完整流程是什么?如何清理DNS缓存?(附源码)

目录 1、什么是域名&#xff1f; 2、为什么使用域名&#xff1f; 3、域名解析的完整流程 4、调用gethostbyname系统接口将域名解析成IP地址 5、为什么需要清理系统DNS缓存&#xff1f; 6、使用cmd命令清理DNS缓存 7、通过代码去清除系统DNS缓存 C软件异常排查从入门到精…

使用量排名前50的GPTs趋势和特征

Chatgpt的gpt商店已经有几千gpts了。目前哪些gpts比较受欢迎呢&#xff1f;有哪些趋势和投资呢? 根据whatplugin.ai&#xff08;截止日期为2024年3月&#xff09;&#xff0c;使用量最多的50个gpts数据分析结果如下&#xff1a; GPTs类型的分布情况如下&#xff1a; 图像生成…

Vue 2 组件创建全指南:一步一步学习

文章目录 步骤 1: 创建组件文件步骤 2: 定义模板步骤 3: 添加脚本步骤 4: 添加样式步骤 5: 使用组件 步骤 1: 创建组件文件 通常&#xff0c;一个 Vue 组件被创建为一个单文件组件 (Single File Component)&#xff0c;这意味着它的模板、脚本和样式都包含在一个 .vue​ 文件中…

Java基础知识总结(79)

waitStatus属性 每个节点与等待线程关联&#xff0c;每个节点维护一个状态waitStatus&#xff0c;waitStatus的各种值以常量的形式进行定义。 CANCELLED(1):waitStatus值为1时表示该线程节点已释放&#xff08;超时、中断&#xff09;&#xff0c;已取消的节点不会再阻塞&…

21.Nacos集群搭建

模拟Nacos三个节点&#xff0c;同一个ip,启动三个不同的端口&#xff1a; 节点 nacos1, 端口&#xff1a;8845 节点 nacos2, 端口&#xff1a;8846 节点 nacos3, 端口&#xff1a;8847 1.搭建数据库&#xff0c;初始化数据库表结构 这里我们以单点的数据库为例 首先新建一…

【C#】基础知识

0.参考 C#语言入门详解 1.几种打印hello_world的方式 1.1 console控制台 新建一个console&#xff0c;直接打印&#xff1a; Console.WriteLine("Hello_world");启动一闪而过&#xff0c;在vs调试中选择开始执行不调试&#xff08;without debug&#xff09;。 …

webpack 区分环境

区分环境 {ignore} 文章目录 区分环境 {ignore} 有些时候&#xff0c;我们需要针对生产环境和开发环境分别书写webpack配置 为了更好的适应这种要求&#xff0c;webpack允许配置不仅可以是一个对象&#xff0c;还可以是一个函数 module.exports env > {return {//配置内容…

通话记录生成器怎么使用

通话记录生成器是一种可以模拟生成通话记录的软件工具&#xff0c;使用起来相对简单。以下是使用步骤&#xff1a; 导入目标号码&#xff1a;您需要将想要生成通话记录的目标号码输入到软件中。这可以通过直接复制粘贴电话号码&#xff0c;或者如果是图片或纸质文件中的号码&am…

分布式与一致性协议之CAP和Paxos算法(一)

CAP 理论 如何使用BASE理论 以InfluxDB系统中DATA节点的集群实现为例。DATA节点的核心功能是读和写&#xff0c;所以基本可用是指读和写的基本可用。我们可以通过分片和多副本实现读和写的基本可用。也就是说&#xff0c;将同一业务的数据先分片&#xff0c;再以多份副本的形…

四种网络IO模型

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;面经 ⛺️稳中求进&#xff0c;晒太阳 IO的定义 IO是计算机内存与外部设备之间拷贝数据的过程。CPU访问内存的速度远高于外部设备。因此CPU是先把外部设备的数据读取到内存&#xff0c;在…

有趣的大模型之我见 | Llama AI Model

Llama 开源吗&#xff1f; 我在写《有趣的大模型之我见 | Mistral 7B 和 Mixtral 8x7B》时曾犹豫&#xff0c;在开源这个事儿上&#xff0c;到底哪个大模型算鼻祖&#xff1f;2023 年 7 月 18 日&#xff0c;Meta 推出了最受欢迎的大型语言模型&#xff08;LLM&#xff09;的第…

20 | 幻读是什么,幻读有什么问题?

幻读是什么? 假设的场景,不是真实的结果 幻读”做一个说明: 在可重复读隔离级别下,普通的查询是快照读,是不会看到别的事务插入的数据的。因此,幻读在“当前读”下才会出现。上面 session B 的修改结果,被 session A 之后的 select语句用“当前读”看到,不能称为幻读…

iview 自定义项求和的方法和错误点

这是iview自定义某几项参数合计的方法&#xff0c;其实是蛮简单的&#xff0c;很多人自定义合计的时候&#xff0c;老是会不知道怎么处理除了需要合计的几项的其他项&#xff0c;其实不需要管&#xff0c;不需要合计的项直接返回空就好了&#xff0c;需要的就在计算的里面做key…