android searchbox,Android中全局搜索(QuickSearchBox)详解(二)
1. 标题:应用程序如何全面支持搜索2. 引言:如果想让某个应用程序支持全局搜索,必须对这个应用程序进行一系列配置,并实现可被外界访问的内容提供者向搜索应用程序(QuickSearchBox)提供搜索結果,根据配置信息,应用程序可被搜索框架识别为搜索源,搜索应用程序(QuickSearchBox)也可以通过解析配置信息组拼成URI请求应用的ContentProvider获取搜索結果。3. 配置实现
1. 标题:
应用程序如何全面支持搜索
2. 引言:
如果想让某个应用程序支持全局搜索,必须对这个应用程序进行一系列配置,并实现可被外界访问的内容提供者向搜索应用程序
(QuickSearchBox)提供搜索結果,根据配置信息,应用程序可被搜索框架识别为搜索源,搜索应用程序(QuickSearchBox)也可以
通过解析配置信息组拼成URI请求应用的ContentProvider获取搜索結果。
3. 配置实现:
1.
应用程序中应当存在一个Activity,这个Activity在AndroidManifest.xml中的基本配置,如下:
android:label="@string/app_name">
/>
"android.intent.category.LAUNCHER" />
"com.focus.FISH_ME"/>
android:name="android.intent.category.DEFAULT"
/>
/>
"android.intent.category.DEFAULT" />
android:resource="@xml/searchable" />
说一下这个Activity的作用:
第一,这样一个Activity在你的应用程序中是必须存在的,因为你配置了上面我用红色注释标注的代码后,这个Activity可以被识别为搜索源,
你的应用支持全局搜索了。
第二,当搜索出結果信息后单击某一个結果项后会打开这个Activity显示搜索出的内容。
2.
searchable.xml最基本,最简单配置:
encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/search_label"
android:includeInGlobalSearch="true"
android:searchSuggestAuthority="com.focus.FISH_ME_AUTHORITY"
android:searchSuggestIntentAction="com.focus.FISH_ME">
这个文件的属性介绍会在后面的文章讲到。
3.
在AndroidManifest.xml文件中配置ContentProvider:
android:name =
"FishMeProvider"
android:authorities= "com.focus.FISH_ME_AUTHORITY"
/>
4.
如何构建Content Provider:
在QuickSearchBox中通过ContentResolver调用内容提供者的query(Uri, String[],
String, String[], String)方法进行信息搜索,应用程序必须实
现这个方法并且返回搜索到的Cursor对象。
下面将对ContentProvider的query方法的参数进行说明:
第一个参数(uri):
content://authority/suggestion.path/search_suggest_query/queryStr?limit=50
authority:对应searchable.xml文件中的android:searchSuggestAuthority属性。
suggestion.path:对应searchable.xml文件中的android:searchSuggestPath属性。
search_suggest_query : 固定字符串。
queryStr: 查询字符串。
limit : 查询条数。
第二个参数(projection):一直为null。
第三个参数(selection):对应searchable.xml文件中android:searchSuggestSelection属性,ContentProvider的query方法将会调用SQLite数据
库的Query方法,用这个参数组成SQL语句中where后面的条件,如:where name like ?,”name like ?
”就是selection参数的值,注意,
android:searchSuggestSelection属性中配置的查询条件不能用“AND”或“OR”等符号连接多个条件(不能写成:“name
like ? AND age like ?”)。
第四个参数(selectionArgs):如果searchable.xml文件中android:searchSuggestSelection属性值不为空,程序会将查询字符串做为这个数组
的第一个元素,也是唯一的元素,在上面第三个参数中定义了查询条件,这个参数的作用是给查询条件中的问号赋值。
第五个参数:一直为null。
该方法将搜索到的数据以cursor对象的形式返回。
更多推荐
所有评论(0)