将Android搜索功能集成到您的应用中

搜索是Android上的核心用户功能。用户必须能够搜索所有可用的数据,无论内容位于设备上还是互联网上。为了帮助为用户创建一致的搜索体验,Android提供了一个搜索框架,可帮助您为您的应用程序实现搜索。

图1. 带有自定义搜索建议的搜索对话框。

搜索框架提供两种搜索输入模式:屏幕顶部的搜索对话框或您可以嵌入到活动布局中的搜索窗口小部件(SearchView)。无论哪种情况,Android系统都会通过将搜索查询传递给执行搜索的特定活动来协助您的搜索实现。您还可以启用搜索对话框或窗口小部件,以便在用户键入时提供搜索建议。图1显示了带有可选搜索建议的搜索对话框示例。

设置搜索对话框或搜索窗口小部件后,您可以执行以下操作:

  • 启用语音搜索。
  • 根据最近的用户查询提供搜索建议。
  • 提供与应用程序数据中的实际结果匹配的自定义搜索建议。
  • 在系统范围的快速搜索框中提供应用程序的搜索建议。

注意:搜索框架提供搜索数据的API。要执行搜索,您需要使用适合您数据的API。例如,如果您的数据存储在SQLite数据库中,请使用android.database.sqlite API执行搜索。

此外,不能保证设备提供专门的搜索按钮来调用应用程序中的搜索界面。使用搜索对话框或自定义界面时,您必须在UI中提供一个搜索按钮来激活搜索界面。有关更多信息,请参阅调用搜索对话框

以下页面将向您展示如何使用Android框架来实现搜索:

创建搜索界面
如何设置您的应用程序以使用搜索对话框或搜索窗口小部件。
添加最近的查询建议
如何根据先前使用过的查询提供建议。
添加自定义建议
如何根据应用程序的自定义数据提供建议,并在系统范围的快速搜索框中提供这些建议。
可搜索配置
可搜索配置文件的参考文档。其他文档还根据特定行为讨论配置文件。

保护用户隐私

在应用程序中实现搜索时,请采取措施保护用户的隐私。许多用户认为他们在手机上的活动(包括搜索)是私人信息。为了保护用户的隐私,请遵守以下原则:

  • 不要将个人信息发送到服务器——如果必须发送,请不要记录它。

    个人信息是可以亲自识别您的用户的任何信息,例如他们的姓名、电子邮件地址、账单信息或其他可以合理地与这些信息关联的数据。如果您的应用程序在服务器的协助下实现搜索,请避免将个人信息与搜索查询一起发送。例如,如果您正在搜索某个邮政编码附近的企业,则无需同时发送用户ID;只需将邮政编码发送到服务器即可。如果必须发送个人信息,请避免记录它。如果必须记录它,请非常小心地保护这些数据,并尽快将其删除。

  • 为用户提供清除其搜索历史记录的方法。

    搜索框架可帮助您的应用程序在用户键入时提供特定于上下文的建议。有时,这些建议基于用户在早期会话中进行的先前搜索或其他操作。用户可能不希望将以前的搜索显示给其他设备用户。如果您的应用程序提供的建议可能会泄露以前的搜索活动,请实现一种方法让用户清除其搜索历史记录。如果您正在使用SearchRecentSuggestions,您可以调用clearHistory()方法。如果您正在实现自定义建议,则需要在用户可以执行的内容提供程序中提供类似的“清除历史记录”方法。