您的位置:首页 > 移动开发 > Android开发

为Android应用添加搜索功能

2016-03-10 16:20 459 查看
android系统中有一个搜索的应用,在改搜索应用中可以选择要搜索的项目,进行搜索,展示出结果。

如何将自己的应用加入到其中呢?实现以下几个步骤就可以:


编写搜索配置的XML文件  
首先看下如何配置搜索的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个步骤就可以简单实现了,如果还要更深入完美的功能,以后再去学习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息