前言
本章内容为Android开发者指南的 Framework Topics/Search章节,译为"搜索",版本为Android 4.0 r1,翻译来自:"呆呆大虾",欢迎访问他的微博:"http://weibo.com/popapa",再次感谢"呆呆大虾" !期待你一起参与翻译Android的相关资料,联系我over140@gmail.com。
搜索
译者署名: 呆呆大虾
版本:Android 4.0 r1
原文
http://developer.android.com/guide/topics/search/index.html
主题
参考
相关示例
带检索功能的字典
搜索是Android的核心功能。用户应该能够搜索任何数据,包括设备上和互联网上的内容。为了建立统一的用户体验,Android为应用程序提供了搜索框架以实现搜索功能。
![](https://images.cnblogs.com/cnblogs_com/over140/2011/12/2011-12-11_1.jpg)
图1. 搜索对话框的屏幕截图,带有自定义的搜索建议项。
搜索框架提供了两种搜索内容录入模式:位于屏幕顶部的搜索对话框、可嵌入activity layout的搜索小部件widget(SearchView)。无论采用哪种模式,Android系统都会把搜索请求发送到执行搜索的指定activity。还可以让搜索框或widget使用用户定义的搜索建议项。图1展示了带有可选搜索建议项的搜索框范例。
一旦创建了搜索对话框或搜索widget,就可以:
· 启用语音搜索
· 根据用户最近的请求提供搜索建议项
· 提供符合应用程序实际数据的自定义搜索建议项
· 将应用程序的搜索建议项提交给系统级“快速搜索框”
注意: 搜索框架并不提供搜索数据的API。为了实际执行搜索,还需要根据数据选用相应的API。比如,假设数据存储在SQLite数据库中,就应该使用android.database.sqlite API来完成搜索。
此外,不是所有设备都保证提供一个专用的“搜索”按钮来触发搜索界面。如果使用了搜索对话框或者自定义界面,必须自行在用户界面上提供一个搜索按钮,用于激活搜索界面。详情请参阅提交搜索对话框。
以下文档展示了如何用Android搜索框架来实现搜索:
如何在应用程序中使用搜索对话框及搜索widget。
如何根据之前提交过的查询给出搜索建议。
如何根据程序自定义数据给出搜索建议,并把建议项提交给系统级“快速搜索框”。
搜索配置文件的参考文档(其它文档可能也已从其它角度对配置文件进行过论述了)。
保护用户隐私
在程序中实现搜索功能时,应该采取一些措施保护用户的隐私。很多用户把手机上的activity——包括搜索——视为私人信息。为了保护所有用户的隐私,应该遵守以下原则:
· 不要把个人信息发送到服务器上去,必须要传送的话也不要把信息记录下来。
个人信息是指能够单独标识用户的任何信息,如姓名、email地址、账单信息或其它与这些信息关联的数据。如果应用程序需要服务器支持才能完成搜索,请避免在搜索请求中发送个人信息。例如,假设要搜索某个邮政编码附近的商店,就没必要同时发送用户ID,仅把邮政编码发到服务器即可。如果必须发送个人信息,那就不要记录这些信息。如果必须记录下来,请非常仔细的保护这些数据并要尽快删除。
· 清空搜索历史数据以保护用户隐私。
搜索框架会帮助程序给出与用户键入内容相关的搜索建议,有时这些建议是根据之前的搜索内容或者用户以前的其它操作而作出的。用户可能并不期望他以前的搜索内容泄露给其他使用这个设备的用户,比如用户是与朋友合用一个设备的。如果应用程序给出的搜索建议可能会暴露以前的搜索activity,就应该向用户提供清除搜索历史的功能。如果用到了SearchRecentSuggestions,则简单地调用clearHistory()方法即可。如果是要实现自定义建议功能,那就不必在用户运行的content provider中提供类似“清除历史”的方法了。