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