为Android应用添加搜索功能
2016-03-10 16:20
459 查看
android系统中有一个搜索的应用,在改搜索应用中可以选择要搜索的项目,进行搜索,展示出结果。 如何将自己的应用加入到其中呢?实现以下几个步骤就可以:
首先看下如何配置搜索的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查询数据并显示结果。创建一个用来执行搜索的Activitypublic 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个步骤就可以简单实现了,如果还要更深入完美的功能,以后再去学习
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories