Tích hợp các tính năng tìm kiếm của Android vào ứng dụng của bạn
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Thử cách Compose
Jetpack Compose là bộ công cụ giao diện người dùng được đề xuất cho Android. Tìm hiểu cách thêm chức năng tìm kiếm trong Compose.
Tìm kiếm là một tính năng cốt lõi dành cho người dùng trên Android. Người dùng phải có thể tìm kiếm mọi dữ liệu mà họ có quyền truy cập, cho dù nội dung đó nằm trên thiết bị hay trên Internet. Để giúp người dùng có được trải nghiệm tìm kiếm nhất quán, Android cung cấp một khung tìm kiếm giúp bạn triển khai tính năng tìm kiếm cho ứng dụng của mình.
Hình 1. Một hộp thoại tìm kiếm có các đề xuất tìm kiếm tuỳ chỉnh.
Khung tìm kiếm cung cấp 2 chế độ nhập nội dung tìm kiếm: hộp thoại tìm kiếm ở đầu màn hình hoặc tiện ích tìm kiếm (SearchView
) mà bạn có thể nhúng vào bố cục hoạt động. Trong cả hai trường hợp, hệ thống Android sẽ hỗ trợ việc triển khai tính năng tìm kiếm bằng cách gửi cụm từ tìm kiếm đến một hoạt động cụ thể thực hiện các lượt tìm kiếm. Bạn cũng có thể bật hộp thoại hoặc tiện ích tìm kiếm để cung cấp đề xuất tìm kiếm khi người dùng nhập. Hình 1 minh hoạ ví dụ về hộp thoại tìm kiếm có các cụm từ tìm kiếm được đề xuất (không bắt buộc).
Sau khi thiết lập hộp thoại tìm kiếm hoặc tiện ích tìm kiếm, bạn có thể làm những việc sau:
- Bật tính năng tìm kiếm bằng giọng nói.
- Đưa ra đề xuất tìm kiếm dựa trên các cụm từ tìm kiếm gần đây của người dùng.
- Cung cấp các đề xuất tìm kiếm tuỳ chỉnh phù hợp với kết quả thực tế trong dữ liệu ứng dụng của bạn.
- Đưa ra các đề xuất tìm kiếm của ứng dụng trong Hộp tìm kiếm nhanh trên toàn hệ thống.
Lưu ý: Khung tìm kiếm không cung cấp API để tìm kiếm dữ liệu của bạn. Để thực hiện tìm kiếm, bạn cần sử dụng các API phù hợp với dữ liệu của mình. Ví dụ: nếu dữ liệu của bạn được lưu trữ trong cơ sở dữ liệu SQLite, hãy sử dụng các API android.database.sqlite
để thực hiện tìm kiếm.
Ngoài ra, không có gì đảm bảo rằng thiết bị sẽ cung cấp một nút TÌM KIẾM chuyên dụng để gọi giao diện tìm kiếm trong ứng dụng của bạn. Khi sử dụng hộp thoại tìm kiếm hoặc giao diện tuỳ chỉnh, bạn phải cung cấp một nút tìm kiếm trong giao diện người dùng để kích hoạt giao diện tìm kiếm. Để biết thêm thông tin, hãy xem phần Gọi hộp thoại tìm kiếm.
Các trang sau đây cho bạn biết cách sử dụng khung của Android để triển khai tính năng tìm kiếm:
- Tạo giao diện tìm kiếm
- Cách thiết lập ứng dụng để sử dụng hộp thoại tìm kiếm hoặc tiện ích tìm kiếm.
- Thêm nội dung đề xuất từ cụm từ tìm kiếm gần đây
- Cách đưa ra đề xuất dựa trên các cụm từ tìm kiếm đã dùng trước đó.
- Thêm đề xuất tuỳ chỉnh
- Cách đưa ra đề xuất dựa trên dữ liệu tuỳ chỉnh từ ứng dụng của bạn và cung cấp các đề xuất đó trong Hộp tìm kiếm nhanh trên toàn hệ thống.
- Cấu hình có thể tìm kiếm được
- Tài liệu tham khảo cho tệp cấu hình có thể tìm kiếm. Các tài liệu khác cũng thảo luận về tệp cấu hình theo các hành vi cụ thể.
Bảo vệ quyền riêng tư của người dùng
Khi triển khai tính năng tìm kiếm trong ứng dụng, hãy thực hiện các bước để bảo vệ quyền riêng tư của người dùng. Nhiều người dùng coi các hoạt động trên điện thoại (bao gồm cả nội dung tìm kiếm) là thông tin riêng tư. Để bảo vệ quyền riêng tư của người dùng, hãy tuân thủ các nguyên tắc sau:
- Đừng gửi thông tin cá nhân đến máy chủ và nếu bắt buộc phải gửi, đừng ghi nhật ký thông tin đó.
Thông tin cá nhân là bất kỳ thông tin nào có thể nhận dạng danh tính của người dùng, chẳng hạn như tên, địa chỉ email, thông tin thanh toán hoặc những dữ liệu khác có thể liên kết một cách hợp lý với những thông tin đó. Nếu ứng dụng của bạn triển khai tính năng tìm kiếm với sự trợ giúp của một máy chủ, hãy tránh gửi thông tin cá nhân cùng với các cụm từ tìm kiếm. Ví dụ: nếu đang tìm kiếm doanh nghiệp ở gần một mã ZIP, bạn không cần gửi cả mã nhận dạng người dùng; chỉ cần gửi mã ZIP đến máy chủ. Nếu bạn phải gửi thông tin cá nhân, hãy tránh ghi nhật ký thông tin đó. Nếu bạn phải ghi nhật ký, hãy bảo vệ dữ liệu đó một cách cẩn thận và xoá dữ liệu đó càng sớm càng tốt.
- Cung cấp cho người dùng cách xoá nhật ký tìm kiếm của họ.
Khung tìm kiếm giúp ứng dụng của bạn đưa ra các đề xuất theo ngữ cảnh trong khi người dùng nhập. Đôi khi, những đề xuất này dựa trên các cụm từ tìm kiếm trước đó hoặc những hành động khác mà người dùng đã thực hiện trong một phiên trước đó. Có thể người dùng không muốn những người dùng khác trên thiết bị thấy các nội dung tìm kiếm trước đây của họ. Nếu ứng dụng của bạn cung cấp các đề xuất có thể tiết lộ hoạt động tìm kiếm trước đây, hãy triển khai một cách để người dùng xoá nhật ký tìm kiếm của họ. Nếu đang sử dụng SearchRecentSuggestions
, bạn có thể gọi phương thức clearHistory()
. Nếu đang triển khai các đề xuất tuỳ chỉnh, bạn cần cung cấp một phương thức "xoá nhật ký" tương tự trong trình cung cấp nội dung mà người dùng có thể thực thi.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-08-26 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-08-26 UTC."],[],[],null,["Try the Compose way \nJetpack Compose is the recommended UI toolkit for Android. Learn how to add search functionality in Compose. \n[Search bar →](/develop/ui/compose/components/search-bar) \n\nSearch is a core user feature on Android. Users must be able\nto search any data that is available to them, whether the content is located on the device or\nthe internet. To help create a consistent search experience for users, Android provides a\nsearch framework that helps you implement search for your application. \n\n**Figure 1.** A search dialog with custom\nsearch suggestions.\n\nThe search framework offers two modes of search input: a search dialog at the top of the\nscreen or a search widget ([SearchView](/reference/android/widget/SearchView)) that you can embed in your activity\nlayout. In either case, the Android system assists your search implementation by\ndelivering search queries to a specific activity that performs searches. You can also enable\nthe search dialog or widget to provide search suggestions as the user types. Figure 1 shows an\nexample of the search dialog with optional search suggestions.\n\nOnce you set up either the search dialog or the search widget, you can do the following:\n\n- Enable voice search.\n- Provide search suggestions based on recent user queries.\n- Provide custom search suggestions that match actual results in your application data.\n- Offer your application's search suggestions in the system-wide Quick Search Box.\n\n**Note** : The search framework does *not* provide APIs to\nsearch your data. To perform a search, you need to use APIs appropriate for your data. For example,\nif your data is stored in an SQLite database, use the [android.database.sqlite](/reference/android/database/sqlite/package-summary)\nAPIs to perform searches.\n\n\u003cbr /\u003e\n\n\nAlso, there is no guarantee that a device provides a dedicated SEARCH button that invokes the\nsearch interface in your application. When using the search dialog or a custom interface, you\nmust provide a search button in your UI that activates the search interface. For more\ninformation, see [Invoke the search\ndialog](/develop/ui/views/search/search-dialog#InvokingTheSearchDialog).\n\nThe following pages show you how to use Android's framework to implement search:\n\n**[Create a search interface](/develop/ui/views/search/search-dialog)**\n: How to set up your application to use the search dialog or search widget.\n\n**[Add recent query\nsuggestions](/develop/ui/views/search/adding-recent-query-suggestions)**\n: How to provide suggestions based on queries previously used.\n\n**[Add custom suggestions](/develop/ui/views/search/adding-custom-suggestions)**\n: How to provide suggestions based on custom data from your application and offer them\n in the system-wide Quick Search Box.\n\n**[Searchable configuration](/develop/ui/views/search/searchable-config)**\n: A reference document for the searchable configuration file. The other\n documents also discuss the configuration file in terms of specific behaviors.\n\nProtect user privacy\n\nWhen you implement search in your application, take steps to protect the user's\nprivacy. Many users consider their activities on their phone---including searches---to\nbe private information. To protect users' privacy, abide by the following\nprinciples:\n\n- **Don't send personal information to servers‐and if you must, don't log it.**\n\n Personal information is any information that can personally identify your users, such as their\n names, email addresses, billing information, or other data that can be reasonably linked to such\n information. If your application implements search with the assistance of a server, avoid sending\n personal information along with the search queries. For example, if you are searching for businesses\n near a ZIP code,\n you don't need to send the user ID as well; send only the ZIP code to the server. If you must\n send personal information, avoid logging it. If you must log it, protect that data\n very carefully and erase it as soon as possible.\n- **Provide users with a way to clear their search history.**\n\n The search framework helps your application provide context-specific suggestions while the user\n types. Sometimes these\n suggestions are based on previous searches or other actions taken by the user in an earlier\n session. A user might not want previous searches to be revealed to other device users. If your\n application provides suggestions that\n can reveal previous search activities, implement a way for the user to clear their\n search history. If you are using [SearchRecentSuggestions](/reference/android/provider/SearchRecentSuggestions),\n you can call the\n [clearHistory()](/reference/android/provider/SearchRecentSuggestions#clearHistory())\n method. If you are implementing custom suggestions, you need to provide a similar \"clear history\"\n method in your content provider that the user can execute."]]