android系统中有一个搜索的应用,在改搜索应用中可以选择要搜索的项目,进行搜索,展示出结果。 如何将自己的应用加入到其中呢?实现以下几个步骤就可以:
- 编写搜索配置的XML文件
首先看下如何配置搜索的XML配置文件。先命名配置文件名称为searchable.xml,并且应该增加一个hint的提示文本信息,如下代码所示:
首先看下如何配置搜索的XML配置文件。先命名配置文件名称为searchable.xml,并且应该增加一个hint的提示文本信息,如下代码所示:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/search_title"
android:hint="@string/search_hint"
android:includeInGlobalSearch="true"
android:searchSettingsDescription="@string/search_settings_description"
/>
但是当我设置文件名为searchable.xml时,这样是失败的不懂事什么原因。后来把名 改为mysearchable.xml就成功了。
2.创建一个可用于搜索的Activity
当用户从一个搜索框执行搜索时,SearchManager会通过ACTION_SEARCH Intent把要搜索的内容(关键字)发送到一个可执行搜索的Activity。这个Activity查询数据并显示结果。 创建一个用来执行搜索的Activity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handleIntent(getIntent());
}
public void onNewIntent(Intent intent) {
setIntent(intent);
handleIntent(intent);
}
private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query =
intent.getStringExtra(SearchManager.QUERY);
doSearch(query);
}
}
private void doSearch(String queryStr) {
//执行真正的查询结果处理
}
3.在Android的manifest.xml文件中进行配置
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<meta-data
android:name="android.app.default_searchable"
android:value="com.jj.drag.MainActivity"
/>
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/mysearchable"
/>
</activity>
</application>
在上面的典型配置中,要注意如下几点:
1)由于当调用搜索activity时,Android调用的是android.intent.action.SEARCH作为搜索的intent,所以必须在intent-filter中包含android.intent.action.SEARCH。
2)在<meta-data>中,指出了searchable.xml的位置
3)同样在<meta-data>中,通过:
- <meta-data
- android:name="android.app.default_searchable"
- android:value=".YourSearchActivity" />
指出了当执行搜索的字符串提交时,将调用哪一个activity去进行处理。
实现上面3个步骤就可以简单实现了,如果还要更深入完美的功能,以后再去学习