Intégrer des fonctionnalités de recherche Android dans votre application
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Essayer Compose
Jetpack Compose est le kit d'outils d'UI recommandé pour Android. Découvrez comment ajouter une fonctionnalité de recherche dans Compose.
La recherche est une fonctionnalité utilisateur essentielle sur Android. Les utilisateurs doivent pouvoir rechercher toutes les données auxquelles ils ont accès, que le contenu se trouve sur l'appareil ou sur Internet. Pour vous aider à créer une expérience de recherche cohérente pour les utilisateurs, Android fournit un framework de recherche qui vous aide à implémenter la recherche pour votre application.
Figure 1 : Boîte de dialogue de recherche avec des suggestions de recherche personnalisées.
Le framework de recherche propose deux modes de saisie de recherche : une boîte de dialogue de recherche en haut de l'écran ou un widget de recherche (SearchView
) que vous pouvez intégrer dans la mise en page de votre activité. Dans les deux cas, le système Android vous aide à implémenter la recherche en envoyant les requêtes de recherche à une activité spécifique qui effectue les recherches. Vous pouvez également activer la boîte de dialogue ou le widget de recherche pour fournir des suggestions de recherche à mesure que l'utilisateur saisit du texte. La figure 1 montre un exemple de boîte de dialogue de recherche avec des suggestions de recherche facultatives.
Une fois la boîte de dialogue de recherche ou le widget de recherche configurés, vous pouvez effectuer les opérations suivantes :
- Activez la recherche vocale.
- Fournir des suggestions de recherche basées sur les requêtes utilisateur récentes.
- Fournissez des suggestions de recherche personnalisées qui correspondent aux résultats réels dans les données de votre application.
- Proposez les suggestions de recherche de votre application dans le champ de recherche rapide à l'échelle du système.
Remarque : Le framework de recherche ne fournit pas d'API pour rechercher vos données. Pour effectuer une recherche, vous devez utiliser les API adaptées à vos données. Par exemple, si vos données sont stockées dans une base de données SQLite, utilisez les API android.database.sqlite
pour effectuer des recherches.
De plus, rien ne garantit qu'un appareil fournisse un bouton de RECHERCHE dédié qui appelle l'interface de recherche dans votre application. Lorsque vous utilisez la boîte de dialogue de recherche ou une interface personnalisée, vous devez fournir un bouton de recherche dans votre UI qui active l'interface de recherche. Pour en savoir plus, consultez Appeler la boîte de dialogue de recherche.
Les pages suivantes vous expliquent comment utiliser le framework Android pour implémenter la recherche :
- Créer une interface de recherche
- Découvrez comment configurer votre application pour utiliser la boîte de dialogue ou le widget de recherche.
- Ajouter des suggestions de requêtes récentes
- Comment fournir des suggestions basées sur les requêtes précédemment utilisées ?
- Ajouter des suggestions personnalisées
- Découvrez comment fournir des suggestions basées sur des données personnalisées de votre application et les proposer dans la barre de recherche rapide à l'échelle du système.
- Configuration indexable
- Document de référence pour le fichier de configuration consultable. Les autres documents abordent également le fichier de configuration en termes de comportements spécifiques.
Protéger la confidentialité des utilisateurs
Lorsque vous implémentez la recherche dans votre application, prenez des mesures pour protéger la confidentialité de l'utilisateur. De nombreux utilisateurs considèrent que leurs activités sur leur téléphone, y compris les recherches, sont des informations privées. Pour protéger la confidentialité des utilisateurs, respectez les principes suivants :
- N'envoyez pas d'informations personnelles aux serveurs. Si vous devez le faire, ne les enregistrez pas.
Les informations personnelles sont toutes les informations permettant d'identifier personnellement vos utilisateurs, comme leur nom, leur adresse e-mail, leurs informations de facturation ou d'autres données pouvant être raisonnablement associées à ces informations. Si votre application implémente la recherche avec l'aide d'un serveur, évitez d'envoyer des informations personnelles avec les requêtes de recherche. Par exemple, si vous recherchez des entreprises à proximité d'un code postal, vous n'avez pas besoin d'envoyer également l'ID utilisateur. Envoyez uniquement le code postal au serveur. Si vous devez envoyer des informations personnelles, évitez de les consigner. Si vous devez les consigner, protégez-les très soigneusement et effacez-les dès que possible.
- Offrez aux utilisateurs un moyen d'effacer leur historique des recherches.
Le framework de recherche aide votre application à fournir des suggestions spécifiques au contexte pendant que l'utilisateur saisit du texte. Parfois, ces suggestions sont basées sur les recherches précédentes ou d'autres actions effectuées par l'utilisateur lors d'une session antérieure. Un utilisateur peut ne pas souhaiter que ses recherches précédentes soient révélées à d'autres utilisateurs de l'appareil. Si votre application fournit des suggestions qui peuvent révéler les activités de recherche précédentes, implémentez un moyen pour l'utilisateur d'effacer son historique de recherche. Si vous utilisez SearchRecentSuggestions
, vous pouvez appeler la méthode clearHistory()
. Si vous implémentez des suggestions personnalisées, vous devez fournir une méthode "Effacer l'historique" similaire dans votre fournisseur de contenu, que l'utilisateur peut exécuter.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/26 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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."]]