搜索是 Android 上的核心用户功能。无论内容是位于设备上还是互联网上,用户都必须能够搜索任何可用的数据。为了帮助为用户打造一致的搜索体验,Android 提供了一个搜索框架来帮助您实现应用搜索。
![](https://developer.android.google.cn/static/images/search/search-suggest-custom.png?authuser=9&hl=lt)
图 1. 包含自定义搜索建议的搜索对话框。
搜索框架提供两种搜索输入模式:屏幕顶部的搜索对话框或可嵌入到 activity 布局中的搜索 widget (SearchView
)。无论是哪种情况,Android 系统都会将搜索查询传递给执行搜索的特定 Activity,从而帮助您实现搜索。您还可以启用搜索对话框或搜索微件,在用户输入内容时提供搜索建议。图 1 显示了包含可选搜索建议的搜索对话框示例。
设置搜索对话框或搜索微件后,您可以执行以下操作:
- 启用语音搜索。
- 根据近期的用户查询提供搜索建议。
- 提供与您的应用数据中的实际结果匹配的自定义搜索建议。
- 在系统级快速搜索框中提供您的应用的搜索建议。
注意:搜索框架不提供用于搜索数据的 API。要执行搜索,您需要使用适合您的数据的 API。例如,如果您的数据存储在 SQLite 数据库中,请使用 android.database.sqlite
API 执行搜索。
此外,也无法保证设备提供用于调用应用中的搜索界面的专用“搜索”按钮。使用搜索对话框或自定义界面时,您必须在界面中提供一个用于激活搜索界面的搜索按钮。如需了解详情,请参阅调用搜索对话框。
以下页面介绍了如何使用 Android 框架实现搜索:
- 创建搜索界面
- 如何设置您的应用以使用搜索对话框或搜索微件。
- 添加近期查询建议
- 如何根据之前使用的查询提供建议。
- 添加自定义建议
- 如何根据应用中的自定义数据提供建议,并在系统级快速搜索框中提供建议。
- 可搜索的配置
- 可搜索配置文件的参考文档。其他文档也从特定行为的角度讨论了配置文件。
保护用户隐私
在应用中实现搜索功能时,请采取措施保护用户的隐私。许多用户认为他们在手机上的活动(包括搜索)是隐私信息。为了保护用户的隐私,请遵循以下原则:
- 请勿向服务器发送个人信息,必要时也不要记录。
个人信息是指任何可以识别用户个人身份的信息,例如用户的姓名、电子邮件地址、结算信息或其他可与此类信息合理关联的数据。如果您的应用在服务器的协助下实现搜索功能,请避免随搜索查询一起发送个人信息。例如,如果您要搜索某个邮政编码附近的商家,则不需要同时发送用户 ID;只需将邮政编码发送到服务器即可。如果您必须发送个人信息,请避免将其记录在日志中。如果您必须记录,请非常小心地保护这些数据,并尽快将其擦除。
- 为用户提供清除搜索记录的方法。
搜索框架可帮助您的应用在用户输入内容时提供特定于上下文的建议。有时,这些建议基于先前的搜索或用户在较早的会话中执行的其他操作。用户可能不希望向其他设备用户显示之前的搜索记录。如果您的应用提供了可以显示先前搜索活动的建议,请实现一种可让用户清除搜索记录的方法。如果您使用的是
SearchRecentSuggestions
,则可以调用clearHistory()
方法。如果您要实现自定义建议,则需要在 content provider 中提供类似的“清除历史记录”方法,让用户可以执行。