Android Q Settings 快速搜索

添加搜索

前提是你已经把你的项添加到了settings中了,在settings中能看到,但是搜索不到。

1.在你自己的java文件中添加BaseSearchIndexProvider

    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider() {
                @Override
                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
                        boolean enabled) {
                    List<SearchIndexableResource> indexables = new ArrayList<>();
                    SearchIndexableResource indexable = new SearchIndexableResource(context);
                    indexable.xmlResId = R.xml.accessibility_vibration_settings;
                    indexables.add(indexable);
                    return indexables;
                }

            };

注意:这个我测试过,理论上是可以的,模仿别的选项。删除的试过,可以。

 

删除搜索

以accessibility页为例子,和上面一样,只是重写的方法不一样

    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider() {

                @Override
                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
                        boolean enabled) {
                    List<SearchIndexableResource> indexables = new ArrayList<>();
                    SearchIndexableResource indexable = new SearchIndexableResource(context);
                    indexable.xmlResId = R.xml.accessibility_settings;
                    indexables.add(indexable);
                    return indexables;
                }
                @Override
                public List<String> getNonIndexableKeys(Context context) {
                    final List<String> keys = super.getNonIndexableKeys(context);
                    keys.add("vibration_preference_screen");
                    return keys;
                }
                
            };

整个accessibility_settings.xml里面的都能搜索到,除了vibration_preference_screen这项。

如果要整个accessibility_settings.xml都不要搜索到,就在里面加这个

    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider() {

                ......

                @Override
                protected boolean isPageSearchEnabled(Context context) {
                    return false;
                }
            };

 

搜索源码路径

packages/app/SettingsIntelligence

点击搜索的时候,打开的是SearchFragment

搜索结果的下面的目录路径在SearchResult的breadcrumbs中

如果搜索中路径结构中有null,可以去看看

SiteMapManager.java

 
final SiteMapPair pair = lookUpParent(currentClass, currentTitle);

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值