添加搜索
前提是你已经把你的项添加到了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);