搜索是 Android 上的核心用户功能。用户必须能够搜索他们可以访问的任何数据,无论内容位于设备上还是互联网上。为了帮助为用户创建一致的搜索体验,Android 提供了一个搜索框架,可帮助您为您的应用程序实现搜索。
搜索框架提供两种搜索输入模式:屏幕顶部的搜索对话框或您可以嵌入活动布局中的搜索 widget(SearchView
)。无论哪种情况,Android 系统都会通过将搜索查询传递到执行搜索的特定活动来协助您的搜索实现。您还可以启用搜索对话框或 widget 以在用户键入时提供搜索建议。图 1 显示了带可选搜索建议的搜索对话框示例。
设置搜索对话框或搜索 widget 后,您可以执行以下操作
- 启用语音搜索。
- 根据最近的用户查询提供搜索建议。
- 提供与应用程序数据中的实际结果匹配的自定义搜索建议。
- 在系统范围的快速搜索框中提供应用程序的搜索建议。
注意:搜索框架不提供用于搜索数据的 API。要执行搜索,您需要使用适合您的数据的 API。例如,如果您的数据存储在 SQLite 数据库中,请使用android.database.sqlite
API 执行搜索。
此外,不能保证设备提供专用的搜索按钮来调用应用程序中的搜索界面。使用搜索对话框或自定义界面时,必须在 UI 中提供一个搜索按钮来激活搜索界面。有关更多信息,请参阅调用搜索对话框。
以下页面将向您展示如何使用 Android 的框架实现搜索
- 创建搜索界面
- 如何设置您的应用程序以使用搜索对话框或搜索 widget。
- 添加最近的查询建议
- 如何根据先前使用的查询提供建议。
- 添加自定义建议
- 如何根据应用程序的自定义数据提供建议并在系统范围的快速搜索框中提供建议。
- 可搜索配置
- 可搜索配置文件的参考文档。其他文档还根据特定行为讨论配置文件。
保护用户隐私
在应用程序中实现搜索时,请采取措施保护用户的隐私。许多用户认为他们在手机上的活动(包括搜索)是私人信息。为了保护用户的隐私,请遵守以下原则
- 不要将个人信息发送到服务器,如果必须发送,请不要记录它。
个人信息是指可以识别用户身份的任何信息,例如他们的姓名、电子邮件地址、账单信息或其他可以合理地链接到此类信息的數據。如果您的应用程序在服务器的协助下实现搜索,请避免将个人信息与搜索查询一起发送。例如,如果您正在搜索某个邮政编码附近的企业,则无需同时发送用户 ID;只需将邮政编码发送到服务器即可。如果必须发送个人信息,请避免记录它。如果必须记录它,请非常小心地保护这些数据并尽快将其删除。
- 为用户提供清除搜索历史记录的方法。
搜索框架可帮助您的应用程序在用户键入时提供特定于上下文的建议。有时这些建议基于先前的搜索或用户在较早会话中执行的其他操作。用户可能不希望先前的搜索被其他设备用户发现。如果您的应用程序提供的建议可能会泄露先前的搜索活动,请实现一种方法供用户清除其搜索历史记录。如果您使用的是
SearchRecentSuggestions
,则可以调用clearHistory()
方法。如果您正在实现自定义建议,则需要在您的内容提供程序中提供类似的“清除历史记录”方法,用户可以执行该方法。