【安卓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.hqwc.cn/news/659964.html

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

相关文章

2024年必应bing广告推广开户有什么条件?

必应Bing作为全球领先的搜索引擎之一&#xff0c;其广告平台正为无数企业开辟着新的市场蓝海。如果您正寻求在必应Bing上投放广告&#xff0c;提升品牌影响力和市场份额&#xff0c;那么了解开户条件并找到一位可靠的合作伙伴至关重要。云衔科技&#xff0c;作为数字营销领域的…

Android CalendarView助你打造精美的Android日历应用

Android CalendarView助你打造精美的Android日历应用 1. 引言 移动应用中的日历功能对于用户来说至关重要&#xff0c;它不仅是时间管理的工具&#xff0c;还能帮助用户记录重要事件和安排活动。因此&#xff0c;一个高效、易用的日历控件对于移动应用的成功至关重要。 传统…

场景文本检测识别学习 day06(Vi-Transformer论文精读)

Vi-Transformer论文精读 在NLP领域&#xff0c;基于注意力的Transformer模型使用的非常广泛&#xff0c;但是在计算机视觉领域&#xff0c;注意力更多是和CNN一起使用&#xff0c;或者是单纯将CNN的卷积替换成注意力&#xff0c;但是整体的CNN 架构没有发生改变VIT说明&#x…

《HCIP-openEuler实验指导手册》1.6 Apache静态资源配置(目录访问)

知识点 常用用途&#xff1a; 软件仓库镜像及提供下载服务&#xff1a; 配置步骤 删除网站主目录中的文件&#xff08;本实验机目录为/home/source ip为192.168.12.137 端口为81&#xff09; cd /home/source rm -rf *在主目录中新建6个文件夹如下图 mkdir test{1..6}新建…

情感类ppt素材

小清新手绘插画风毕业季毕业相册同学录画册纪念册PPT下载 - 觅知网这是一张关于清新毕业相册的PPT模板&#xff0c;清新风格设计&#xff0c;加上风为装饰元素&#xff0c;包含毕业相册、毕业季、毕业、同学、纪念等主题内容&#xff0c;也可用作毕业相册PPT、毕业季PPT、毕业P…

【酱浦菌-爬虫项目】爬取学术堂论文信息

1. 首先&#xff0c;代码定义了一个名为 url 的变量&#xff0c;它是一个包含三个网址的集合&#xff08;或者说是一个集合的字典&#xff09;。这些网址分别是&#xff1a; - ‘http://www.xueshut.com/lwtimu/127966.html’ - ‘http://www.xueshut.com/lwtimu/12…

JAVA前端快速入门基础_javascript入门(02)

写在前面:本文用于快速学会简易的JS&#xff0c;仅做扫盲和参考作用 1.JavaScript函数 什么是函数:执行特定任务的代码块 1.1定义&#xff1a; 使用function来进行定义(类似于python里面的def 或者java和c里面的void&#xff0c;int这些返回类型开头)。定义规则如下: func…

AI大模型探索之路-训练篇8:大语言模型Transformer库-预训练流程编码体验

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…

【GAMES 101】图形学入门——着色(Shading)

定义&#xff1a;将不同材质内容应用于不同物体对象上的过程。着色只考虑着色点的存在&#xff0c;不考虑其他物体的遮挡等&#xff0c;因此不考虑阴影处理 一些前期内容的定义&#xff1a; 着色点&#xff08;Shading Point&#xff09;观测方向&#xff08;Viewer Directio…

城会玩,Selenium+Docker成功解决这一大难题

01、需求背景 日常测试中会遇到对web应用进行UI自动化的测试场景&#xff0c;一般常用的工具是使用Selenium&#xff0c;一套简单的UI自动化架构如下&#xff1a; 上图即为简单搭建的一套UI自动化测试架构&#xff0c;但 串行执行测试用例&#xff1a; 一台机器只能安装一个…

第十五届蓝桥杯省赛第二场C/C++B组H题【质数变革】题解

解题思路 首先&#xff0c;我们考虑一下整个数组都是由质数构成的情况。 当我们要将质数 x x x 向后移 k k k 个时&#xff0c;如果我们可以知道质数 x x x 在质数数组的下标 j j j&#xff0c;那么就可以通过 p r i m e s [ j k ] primes[j k] primes[jk] 来获取向后…

自动化神器,获客秘籍揭秘!

在如今这个信息爆炸的时代&#xff0c;企业如何高效精准地获客成为了一个重要课题。传统的营销方式不仅成本高昂&#xff0c;且效果往往难以衡量。然而&#xff0c;随着自动化工具的兴起&#xff0c;这一切都在悄无声息中发生着翻天覆地的变化。 我们得了解一下什么是自动化工具…