settings下新添加的菜单如何让search可以搜索到

2023-05-16

1.在做此操作时,前提是新增加的菜单已经可以显示,

2.增加两个地方:

2.1 \packages\apps\Settings\src\com\android\settings\search\Ranking.java

sRankMap.put(UsbmodeSettings.class.getName(), RANK_USB_MODE); // class name & Rank id为新增加的项

2.2 \packages\apps\Settings\src\com\android\settings\search\SearchIndexableResources.java

sResMap.put(UsbmodeSettings.class.getName(),
new SearchIndexableResource(
Ranking.getRankForClassName(UsbmodeSettings.class.getName()),
NO_DATA_RES_ID,
//R.xml.usbmode_settings,
UsbmodeSettings.class.getName(),
R.drawable.ic_settings_storage));

两种方式,一种是直接在new SearchIndexableResource() 时传入布局文件,另一种为"NO_DATA_RES_ID"表示此搜索项匹配没有需要解析的xml文件,此xml的解析在Index.java中,  采用第二种时,需要在对应的类中创建一个SEARCH_INDEX_DATA_PROVIDER,类型为SearchIndexProvider,继承BaseSearchIndexProvider并复写其两个方法 

Index.java中对这两种方式的处理逻辑如下:

private void indexOneResource(SQLiteDatabase database, String localeStr,
            SearchIndexableResource sir, Map<String, List<String>> nonIndexableKeysFromResource) {


        if (sir == null) {
            Log.e(LOG_TAG, "Cannot index a null resource!");
            return;
        }


        final List<String> nonIndexableKeys = new ArrayList<String>();


        if (sir.xmlResId > SearchIndexableResources.NO_DATA_RES_ID) {//当为具体的xml处理
            List<String> resNonIndxableKeys = nonIndexableKeysFromResource.get(sir.packageName);
            if (resNonIndxableKeys != null && resNonIndxableKeys.size() > 0) {
                nonIndexableKeys.addAll(resNonIndxableKeys);
            }


            indexFromResource(sir.context, database, localeStr,
                    sir.xmlResId, sir.className, sir.iconResId, sir.rank,
                    sir.intentAction, sir.intentTargetPackage, sir.intentTargetClass,
                    nonIndexableKeys);
        } else {
            if (TextUtils.isEmpty(sir.className)) {
                Log.w(LOG_TAG, "Cannot index an empty Search Provider name!");
                return;
            }


            final Class<?> clazz = getIndexableClass(sir.className);
            if (clazz == null) {
                Log.d(LOG_TAG, "SearchIndexableResource '" + sir.className +
                        "' should implement the " + Indexable.class.getName() + " interface!");
                return;
            }


            // Will be non null only for a Local provider implementing a
            // SEARCH_INDEX_DATA_PROVIDER field
            final Indexable.SearchIndexProvider provider = getSearchIndexProvider(clazz);//判断类中是否有SearchIndexProvider
            if (provider != null) {
                List<String> providerNonIndexableKeys = provider.getNonIndexableKeys(sir.context);
                if (providerNonIndexableKeys != null && providerNonIndexableKeys.size() > 0) {
                    nonIndexableKeys.addAll(providerNonIndexableKeys);
                }


                indexFromProvider(mContext, database, localeStr, provider, sir.className,
                        sir.iconResId, sir.rank, sir.enabled, nonIndexableKeys);
            }
        }
    }

处理逻辑如下:


可以打开数据库查看对应的项是否已添加成功,

data/user_de/0/com.android.settings/databases/search_index.db

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

settings下新添加的菜单如何让search可以搜索到 的相关文章

  • XCOM V2.6 串口打印出来中文乱码,字体格式错乱的一种原因(设置没问题,突然乱码)

    一 问题重现 XCOM V2 6里 xff0c 完全一样的设置 xff0c 之前显示的好好的 xff0c 后来突然中文出现乱码 xff0c 字体格式也大变 xff0c 如下图 xff1a 二 解决方案 一般这种乱码 xff0c 往往都是因为
  • 生产者与消费者模型

    1 三种关系 1 生产者和生产者互斥关系 2 消费者和消费者互斥关系 3 生产者和消费者同步互斥关系 2 生产者和消费者模型 生产者消费者模型就是通过一个容器来来解决强耦合问题的 耦合 xff1a 2个或2个以上事物相互作用 xff0c 相
  • Windows server 2016基本设置

    windows server 2016相比较而言具有更加稳定的特性 xff0c 但不免有些繁琐 xff0c 可以通过一些设置可以使其更加易用 一 组策略 WIN键 43 R键 xff0c 输入gpedit msc xff0c 进入组策略设置
  • 收藏 | 阿里程序员常用的 15 款开发者工具(2020 版)

    简介 xff1a 本文精选了一些阿里经济体内部最受开发者欢迎的开发者工具 xff0c 筛选出一些带有普适性同样适合外部开发者的 xff0c 希望能助力开发者们提高开发效率 来源 阿里巴巴云原生公众号 本文精选了一些阿里经济体内部最受开发者欢
  • root登录卡在tty,登入root

    ubuntu桌面使用root直接登录的方法 Linux系统下文件的权限十分重要 xff0c 大多数操作都需要一定的权限才可以操作 xff0c Ubuntu18 04默认安装是没有设置root账户的 xff0c 因此想要获得root账户登录可
  • 使用Python做一个语音播报温湿度系统,元气满满的一天从听到他开始

    来这里发现更多有趣案例 HaaS开发框架 HaaS积木方案 xff0c 赋能生态开发者 xff0c 让您快速找到自己需要的解决方案 xff0c 硬件主板与外设 xff0c 以及各种应用组件 https haas iot aliyun com
  • 基于MVC模式实现用户注册和登录功能

    目录 1 实验简介2 具体细节分析3 实验工具4 整体框架截图5 代码实现1 login jsp2 ok jsp3 register jsp4 list jsp5 edit jsp6 DBConn java7 User java8 User
  • 十大远程控制软件(远程控制软件推荐)

    远程控制软件可以跨空间的操控对方电脑 xff0c 被广泛用于远程办公 远程教育 远程指挥 远程协助 远程维护 xff0c 已成为电脑必备应用 xff1b 那么纵观全网 xff0c 有哪些好用的远程软件 xff1f 这些远程控制软件有什么优势
  • 程序员永远的痛之字符编码的奥秘

    字符编码相信是每个程序员的噩梦 xff0c 只要是有中文的地方 xff0c 总是会遇到各种编码的问题 xff0c 并且这种问题还非常难缠 xff0c 尤其在linux上 xff0c 因为上面很多软件都是针对英语国家开发的 xff0c 是不会
  • C++11 之for 新解

    前言 C 43 43 11这次的更新带来了令很多C 43 43 程序员期待已久的for range循环 xff0c 每次看到javascript xff0c lua里的for range xff0c 心想要是C 43 43 能有多好 xff
  • c++11之初始化列表

    一 前言 C 43 43 的学习中 xff0c 我想每个人都被变量定义和申明折磨过 xff0c 比如我在大学笔试过的几家公司 xff0c 都考察了const和变量 xff0c 类型的不同排列组合 xff0c 让你区别有啥不同 反正在学习C
  • Unity Update 详解

    0x01 简介 Unity的脚本继承了Monobehaviour类 xff0c 在脚本中定义函数 xff1a void FixedUpdate span class hljs list span void span class hljs k
  • 2016总结

    欲言又止 xff1a 每年的年终总结是要在新年之前发表在博客上 xff0c 今年的年终总结拖到现在完成 xff0c 我也是服自己 这里要感谢我的高中好友 64 万学清同学 xff0c 在我去年微信发表的有关年终总结的朋友圈下 xff0c 催
  • 阅读代码和修改别人代码的一些技巧以及注意事项

    作为刚刚走上工作岗位的fish xff0c 都要熟悉前辈们留下来的代码 这段时间是fish最痛苦的时间同时也是最轻松的时间 痛苦是因为要看大量的代码 xff0c 同时要慢慢从学生到社会人士的转变 xff08 xff0c 再不能睡懒觉了 xf
  • ESP32控制TDC-GP22测量超声传播时间(超声流量计)

    TDC GP22控制的资料 xff0c 网上的资源都是基于STM32或者MSP430主控的 xff0c 但现在这两款芯片都太贵了 xff0c 因此就想用便宜点的ESP32 xff0c 折腾了快一周 xff0c 终于弄好了 工程源码和参考资料
  • WIN10远程连接WIN10报错:你的凭据不工作

    很多用户在升级到win10系统之后 xff0c 连接远程桌面功能的时候遇到这样一个错误 xff0c 就是远程桌面提示 你的凭据不工作 xff0c 导致无法连接远程桌面 xff0c 该怎么解决呢 xff0c 下面为大家讲解一下Win10无法连
  • 一个分号引发的血案

    最近在看 Data Structures and Algorithms 这本书 xff0c 书里对数据结构和算法进行了简单的描述 xff0c 并且用伪码进行了实现 伪码毕竟和代码还是有很大不同的 xff0c 书的说明里说有C 写的源码 xf
  • Iphone客户端程序员半年工作总结

    来公司四个半月了 xff0c 从对客户端游戏编程的小白慢慢的也能写一些东西了 xff0c 当然了这里最感谢的人就是九天了 xff0c 对于九天其它的好我就不说了 xff0c 就是感觉九天为了团队 xff0c 为了项目 xff0c 他在很用心
  • Unity Android Activity控制

    前言 开发游戏 xff0c 在国内发行 xff0c 接入各个渠道SDK是一件绕不开的事情 并且这件事非常复杂琐碎 xff0c 原因如下 xff1a a 发行平台多 xff0c Android平台有30 xff0c 40家主流发行平台 b 每
  • Unity Android 加载动态库

    前言 在接入360 Android SDK时遇到在有些机型的Android机器上报错 xff0c 具体错误提示为 xff1a Failure to initialize Your hardware does not support this

随机推荐

  • 德鲁克谈《自我管理》笔记摘要

    一 我的长处是什么 多数人都以为他们知道自己擅长什么 xff0c 其实不然 要发现自己的长处 xff0c 唯一的途径就是分析回馈法 写下自己预期的结果 9 12个月后 xff0c 将实际结果和预期比较 总结改善自己的预期和行动 我们要以持之
  • ubuntu下搭建cocos2dx编程环境-上

    这大半年一直在开发flash游戏 xff0c 用到的编程语言是actionscript和c 43 43 所以这次公司决定开发手游端的话 xff0c C 43 43 不是很生疏 xff0c 这是个好消息 坏消息是由于现在网页游戏还没有上线 x
  • ubuntu 系统上安装python3.6

    今天再ubuntu系统上安装python3 6 xff0c 之前版本是python 2 7版本 具体安装步骤如下 xff1a 1 sudo apt get update 2 sudo apt get install software pro
  • 用matlab实现图片的缩放

    i 61 imread 39 qiegray jpg 39 j 61 imresize i 0 5 imshow i figure imshow j
  • VR系统的组成与交互技术汇总

    今天给大家介绍一下VR系统的组成与当前一些VR交互技术 xff0c 希望大家对VR有更深的理解 一个典型的虚拟现实系统主要由计算机 输入输出设备 虚拟现实设计 浏览软件等组成 用户以计算机为核心 xff0c 通过输入输出设备与应用软件的虚拟
  • 百度云python客户端bypy的上传命令(upload)

    命令 xff1a bypy upload localfile cloudfile 说明 xff1a 1 xff09 localfile为本地文件路径 2 xff09 cloudfile为云端文件路径 3 xff09 由于百度的限制 xff0
  • 【Github】git bash无法复制粘贴

    参考教程https www cnblogs com slw0113 p 15602715 html 使用git bash时只能使用手工敲击所有命令 xff0c 非常不方便 1 在屏幕右键打开git bash命令窗口 2 在左上角右键 xff
  • python编码与反编码 decode('unicode-escape')

    反编码 我自己起的名字 xff0c 大概意思就是我得到一串字符 xff0c 是unicode码 xff0c 如 xff1a u53eb u6211 xff0c 进行反编码后得到其对应的汉字 f 61 39 u53eb u6211 39 pr
  • (11)jsp+servlet编程实战《猜数字游戏》

    使用JSP技术实现猜数字游戏 设计一个web app xff0c 每次产生一个30以内的数字 xff0c 给5次机会让客户猜测这个数字 xff1a 1 xff09 如果客户猜的数字比产生的数字值大 xff0c 则提示 可惜 xff0c 大了
  • Spark2.0 shell使用python3

    spark2 0 shell默认使用的是python2 xff0c 如果想用python3作为默认shell xff0c 那么只需要修改 spark home bin pyspark文件下的配置即可 span class token com
  • 五分钟教你搭建 Typecho个人博客

    五分钟教你搭建 Typecho 个人博客 简介 本教程将会教会你如何使用阿里云服务器添加一条A记录 xff0c 部署博客程序源码 xff0c 最后搭建一个属于自己的博客 xff0c 新手小白必备 xff01 关于 Typecho 仅仅 7
  • Typora 设置上传图片功能

    Typora 设置上传图片功能 准备工作 安装 Picgo安装 Typora配置好自己的图床 以上步骤可参考我以前的文章 如何使用 picgo 搭建个人图床 Typora 设置自动上传插入图片功能 xff0c 实现 61 61 截屏 xff
  • 为什么要用到二进制?

    进制及其转换 为什么要用到二进制 xff1f 数字电路非常广泛 xff0c 小到逻辑门电路 xff0c 大到超大规模集成电路 xff0c 手机 xff0c 电脑 xff0c 智能设备 数字信号即可以表示数字 xff0c 也可以表示非数值的信
  • Github student package 申请过程

    Github学生包优惠 验证教育邮箱 进入官网 填写资料 填写材料时 xff0c 务必如实填写 最好添加一个教育邮箱 xff0c 也就是将你的教育邮箱绑定giehub账号 xff0c 如第一张图所示 填写资料的中途可能要上传附件 xff0c
  • 解决 python2 下 pip 命令报错

    问题背景 没有 pip 模块 xff0c 那就下载一个 pip 包 当前最新版 setuptools 51 3 1 在 setuptools 51 3 1 路径下打开 cmd xff0c 使用 python setup py install
  • 字符串计数函数 python 读取列表字符串

    函数要有通用性 xff0c 可输入任意个字符串 xff0c 逐个检查 定义 字符串计数函数 xff0c 分别对数字 字母 空格逐个检查计数 xff0c 其余字符另外计数 def str count args str 61 for i in
  • 解决wordpress安装主题或插件需要FTP问题

    如果该方法不行 xff0c 可参考另外一篇博文 xff1a http blog csdn net qq 32846595 article details 54766833 很多人在使用WordPress安装主题或插件时都要求填写FTP账号和
  • PreferenceActivity中,Header是如何被加载的?

    转载请注明出处 xff1a http blog csdn net droyon article details 17798697 本文主要回答下面这个问题 xff1a Android中 xff0c Header是如何被PreferenceA
  • Oracle中修改表列名,用SQL语句的方式

    下面介绍两种 在Oracle中修改表的列名的方式 一 xff08 在sqlplus工具下 xff09 使用如下命令 xff1a alter table lt table name gt rename column lt column old
  • settings下新添加的菜单如何让search可以搜索到

    1 在做此操作时 xff0c 前提是新增加的菜单已经可以显示 xff0c 2 增加两个地方 xff1a 2 1 packages apps Settings src com android settings search Ranking j