Implementierung der Suche mithilfe des Android-Systems, d. h. Bereitstellung einer Suche Suchanfragen zu einer Aktivität abrufen und Suchvorschläge bereitstellen – Ihre Anwendung muss eine Suche Konfiguration im Format einer XML-Datei.
Auf dieser Seite wird die Konfigurationsdatei für die Suche in Bezug auf Syntax und Verwendung beschrieben. Weitere Informationen Informationen zur Implementierung von Suchfunktionen für Ihre Anwendung finden Sie unter Erstellen Sie eine Suchoberfläche.
- Dateispeicherort:
res/xml/filename.xml
Android verwendet den Dateinamen als Ressourcen-ID.- Syntax:
-
<?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="string resource" android:hint="string resource" android:searchMode=["queryRewriteFromData" | "queryRewriteFromText"] android:searchButtonText="string resource" android:inputType="
inputType
" android:imeOptions="imeOptions
" android:searchSuggestAuthority="string" android:searchSuggestPath="string" android:searchSuggestSelection="string" android:searchSuggestIntentAction="string" android:searchSuggestIntentData="string" android:searchSuggestThreshold="int" android:includeInGlobalSearch=["true" | "false"] android:searchSettingsDescription="string resource" android:queryAfterZeroResults=["true" | "false"] android:voiceSearchMode=["showVoiceSearchButton" | "launchWebSearch" | "launchRecognizer"] android:voiceLanguageModel=["free-form" | "web_search"] android:voicePromptText="string resource" android:voiceLanguage="string" android:voiceMaxResults="int" > <actionkey android:keycode="KEYCODE
" android:queryActionMsg="string" android:suggestActionMsg="string" android:suggestActionMsgColumn="string" /> </searchable> - Elemente:
-
<searchable>
- Definiert alle Suchkonfigurationen, die vom Android-System für die unterstützte Suche verwendet werden.
Attribute:
android:label
- Stringressource. (Erforderlich.) Der Name Ihrer Anwendung. Sie muss mit
den Namen, der auf das Attribut
android:label
Ihres<activity>
oder<application>
Manifest-Element enthält. Dieses Label ist für den Nutzer nur sichtbar, wenn Sie Folgendes festlegen:android:includeInGlobalSearch
bis"true"
. In diesem Fall wird dieses Label verwendet. , um Ihre Anwendung als durchsuchbares Element in den Sucheinstellungen des Systems zu kennzeichnen. android:hint
- Stringressource. (Empfohlen.) Text, der im Suchfeld angezeigt wird, wenn
wird kein Text eingegeben. Sie gibt dem Nutzer einen Hinweis darauf, nach welchen Inhalten gesucht werden kann. Aus Konsistenzgründen
mit anderen Android-Apps verwenden, formatieren Sie den String für
android:hint
als "Search" <content-or-product>“ beginnen. Beispiel: „Titel und Künstler suchen“ oder „Auf YouTube suchen“. android:searchMode
- Keyword: Legt zusätzliche Modi fest, die die Darstellung der Suche steuern. Verfügbar
festlegen, wie der Abfragetext neu geschrieben werden muss, wenn ein benutzerdefinierter Vorschlag
fokussiert. Die folgenden Moduswerte werden akzeptiert:
Wert Beschreibung "queryRewriteFromData"
Verwenden Sie den Wert aus der SUGGEST_COLUMN_INTENT_DATA
, um den bquery-Text umzuschreiben. Dies darf nur verwendet werden, wenn die Werte inSUGGEST_COLUMN_INTENT_DATA
eignen sich zur Prüfung und Bearbeitung durch Nutzer. wie HTTP-URIs."queryRewriteFromText"
Verwenden Sie den Wert aus der SUGGEST_COLUMN_TEXT_1
um den Abfragetext umzuschreiben.Weitere Informationen finden Sie in der Dokumentation zum Umschreiben des Abfragetexts in Fügen Sie benutzerdefinierte Suchvorschläge hinzu.
android:searchButtonText
- Stringressource. Der Text, der in der Schaltfläche zum Ausführen der Suche angezeigt werden soll. Von zeigt die Schaltfläche ein Suchsymbol (Lupe) an. Dies ist ideal für Internationalisierung. Verwenden Sie dieses Attribut also nur dann zum Ändern der Schaltfläche, wenn das Verhalten etwas anderes als eine Suche, wie z. B. eine URL-Anforderung in einem Webbrowser.
android:inputType
- Keyword: Definiert den Typ der zu verwendenden Eingabemethode, z. B. den Typ des weichen
Tastatur. Für die meisten Suchanfragen, bei denen Freitext erwartet wird, benötigen Sie dieses Attribut nicht.
Unter
inputType
finden Sie eine Liste der geeignete Werte für dieses Attribut. android:imeOptions
- Keyword: Stellt zusätzliche Optionen für die Eingabemethode bereit. Für die meisten Suchanfragen in
welches Freiformtext erwartet wird, benötigen Sie dieses Attribut nicht. Der Standard-IME ist
actionSearch
für die „Suche“ statt eines Zeilenumbruchs Bildschirmtastatur. Weitere Informationen:imeOptions
finden Sie eine Liste geeigneter Werte für dieses Attribut.
Attribute für Suchvorschläge
Wenn Sie einen Contentanbieter zur Generierung von Suchvorschlägen festlegen, müssen Sie zusätzliche Attribute, die die Kommunikation mit dem Contentanbieter konfigurieren. Bei der Bereitstellung von erhalten Sie einige der folgenden
<searchable>
-Attribute:
android:searchSuggestAuthority
- String. (Erforderlich für Suchvorschläge.) Dieser Wert muss mit der
Autorisierungsstring im
android:authorities
angegeben des Android-Manifestelements<provider>
. android:searchSuggestPath
- String. Dieser Pfad wird als Teil der Vorschläge verwendet
Abfrage
Uri
, nach dem Präfix und und vor dem Standardpfad für Vorschläge liegen. Dies ist nur erforderlich, wenn Sie eine eines einzelnen Contentanbieters, der unterschiedliche Arten von Vorschlägen bereitstellt, z. B. für unterschiedliche -Datentypen – und Sie benötigen eine Möglichkeit, die Vorschlagsabfragen zu unterscheiden, wenn Sie . android:searchSuggestSelection
- String. Dieser Wert wird an Ihr
Abfragefunktion als
selection
-Parameter verwenden. In der Regel ist dies eine WHERE-Klausel, für Ihre Datenbank und muss ein einzelnes Fragezeichen als Platzhalter für den den tatsächlichen Abfragestring, der vom Nutzer eingegeben wurde, z. B."query=?"
. Sie können jedoch Sie können auch einen beliebigen Nicht-Null-Wert verwenden, um die Übermittlung des Abfragetexts mithilfe der MethodeselectionArgs
-Parameter und ignorieren dann denselection
-Parameter. android:searchSuggestIntentAction
- String. Die Standard-Intent-Aktion, die verwendet wird, wenn ein Nutzer
auf einen benutzerdefinierten Suchvorschlag wie
"android.intent.action.VIEW"
tippt. Wenn dieser Wert nicht durch den ausgewählten Vorschlag mit der MethodeSUGGEST_COLUMN_INTENT_ACTION
wird der Wert im Aktionsfeld derIntent
, wenn der Nutzer auf einen Vorschlag. android:searchSuggestIntentData
- String. Die Standard-Intent-Daten, die verwendet werden, wenn ein Nutzer
auf einen benutzerdefinierten Suchvorschlag tippt.
Wenn sie nicht durch den ausgewählten Vorschlag überschrieben wird, über die
SUGGEST_COLUMN_INTENT_DATA
Spalte: Dieser Wert wird im Datenfeld derIntent
, wenn der Nutzer auf einen Vorschlag. android:searchSuggestThreshold
- Ganzzahl. Die Mindestanzahl von Zeichen, die für das eine Vorschlagssuche auslösen. Dies garantiert lediglich, dass das System Ihre Contentanbieter zu bezahlen, wenn dieser unter dem Grenzwert liegt. Der Standardwert ist 0.
Weitere Informationen zu den oben genannten Attributen für Suchvorschläge finden Sie in der Dokumentation zum Hinzufügen benutzerdefinierter Suchvorschläge und Benutzerdefinierte Vorschläge hinzufügen.
Attribute des Schnellsuchfelds
Um Ihre benutzerdefinierten Suchvorschläge für das Schnellsuchfeld verfügbar zu machen, benötigen Sie einige der folgende
<searchable>
-Attribute:
android:includeInGlobalSearch
- Boolescher Wert. (Erforderlich für Suchvorschläge im
Schnellsuchfeld.) Legen Sie
"true"
fest, wenn Ihre Vorschläge die im global zugänglichen Schnellsuchfeld enthalten sind. Der Nutzer muss Ihre Anwendung dennoch als durchsuchbares Element in den Systemsucheinstellungen aktivieren, bevor Ihre Vorschläge werden im Schnellsuchfeld angezeigt. android:searchSettingsDescription
- Stringressource. bietet eine kurze Beschreibung der Suchvorschläge, die das Sie im Schnellsuchfeld bereitstellen, das im Eintrag für die durchsuchbaren Elemente Ihres . Ihre Beschreibung muss die Inhalte, nach denen gesucht werden kann, prägnant beschreiben. Für Beispiel: „Künstler, Alben und Titel“ für eine Musik-App oder "Gespeicherte Notizen" für ein Notepad-Anwendung.
android:queryAfterZeroResults
- Boolescher Wert. Legen Sie
"true"
fest, wenn Ihr Contentanbieter für Obermengen von Abfragen aufgerufen, die zuvor null Ergebnisse zurückgegeben haben. Wenn beispielsweise Ihr Contentanbieter keine Ergebnisse für „bo“ zurückgibt, muss nach „bob“ gesucht werden. Wenn auf"false"
gesetzt ist, werden Obermengen für eine einzelne Sitzung ignoriert, z. B. "bob". ruft keine erneute Abfrage auf. Dies gilt nur für die Dauer des Suchdialogs wenn Sie das Such-Widget verwenden. Wenn das Dialogfeld für die Suche oder die Aktivitäten wieder geöffnet wird, „bo“ fragt Ihren Contentanbieter erneut ab. Der Standardwert ist "false".
Attribute für die Sprachsuche
Um die Sprachsuche zu aktivieren, benötigen Sie einige der folgende
<searchable>
-Attribute:
android:voiceSearchMode
- Keyword: (Erforderlich für die Sprachsuche.)
Aktiviert die Sprachsuche mit einem bestimmten Modus für die Sprachsuche.
Die Sprachsuche wird vom Gerät möglicherweise nicht unterstützt. In diesem Fall werden diese Flags angezeigt.
haben keine Auswirkungen. Die folgenden Moduswerte werden akzeptiert:
Wert Beschreibung "showVoiceSearchButton"
Schaltfläche für die Sprachsuche anzeigen, wenn die Sprachsuche auf dem Gerät verfügbar ist. Wenn festgelegt, dann muss entweder "launchWebSearch"
oder"launchRecognizer"
festgelegt werden, durch ein Pipe-Zeichen (|
) getrennt."launchWebSearch"
Über die Schaltfläche für die Sprachsuche gelangen Nutzer direkt mit der integrierten Sprachsuche. Die meisten Anwendungen verwenden dieses Flag nicht, da wird der Nutzer von der Aktivität entfernt, in der die Suche aufgerufen wurde. "launchRecognizer"
Über die Schaltfläche für die Sprachsuche den Nutzer direkt zu einer integrierten Sprachaufzeichnung. Diese Aktivität fordert den Nutzer zum Sprechen auf, transkribiert den gesprochenen Text und leitet das Ergebnis an die suchbare Aktivität zu übergeben, als ob der Nutzer und auf die Schaltfläche „Suchen“ getippt. android:voiceLanguageModel
- Keyword: Das Sprachmodell, das
müssen vom Spracherkennungssystem verwendet werden. Die folgenden Werte werden akzeptiert:
Wert Beschreibung "free_form"
Verwenden Sie die Freiform-Spracherkennung für die Spracheingabe von Suchanfragen. Dies ist in erster Linie für Englisch optimiert. Das ist die Standardeinstellung. "web_search"
Nutzen Sie die Spracherkennung für kürzere, suchähnliche Wortgruppen. Dies ist in mehr Sprachen als "free_form"
verfügbar.Weitere Informationen finden Sie unter Weitere Informationen:
EXTRA_LANGUAGE_MODEL
Informationen. android:voicePromptText
- Stringressource. Eine zusätzliche Nachricht, die im Dialogfeld für die Spracheingabe angezeigt wird.
android:voiceLanguage
- String. Die zu erwartende gesprochene Sprache, ausgedrückt als Stringwert von
eine Konstante in
Locale
, z. B."de"
für Deutsch oder"fr"
für Französisch. Dies ist nur erforderlich, wenn es unterschiedlich ist. aus dem aktuellen Wert vonLocale.getDefault()
. android:voiceMaxResults
- Ganzzahl. Legt die maximale Anzahl der zurückzugebenden Ergebnisse fest
einschließlich der „besten“ das immer als
ACTION_SEARCH
die primäre Abfrage des Intents. Muss 1 oder größer sein. Verwenden SieEXTRA_RESULTS
um die Ergebnisse des Intents zu erhalten. Wenn nicht angegeben, wählt das Erkennungsmodul aus, wie viele Ergebnisse zurückgegeben werden sollen.
<actionkey>
- Definiert einen Geräteschlüssel und das Verhalten für eine Suchaktion. Eine Suchaktion bietet eine besondere
Verhalten beim Tippen auf eine Schaltfläche auf dem Gerät, basierend auf der aktuellen Suchanfrage oder dem Fokus
Vorschlag. Die Kontakte-App bietet beispielsweise eine Suchaktion, um ein Telefon
ruft den aktuell fokussierten Kontaktvorschlag auf, wenn auf die ANRUF-Schaltfläche getippt wird.
Nicht alle Aktionsschlüssel sind auf jedem Gerät verfügbar und nicht alle Schlüssel können hier überschrieben werden. Beispiel: Die „Startseite“ Schlüssel kann nicht überschrieben werden und muss immer zum Startbildschirm zurückkehren Bildschirm. Definieren Sie außerdem keinen Aktionsschlüssel für Tasten, die zum Eingeben einer Suchanfrage benötigt werden. Abfrage. Dadurch werden die verfügbaren und sinnvollen Aktionstasten auf die Anrufschaltfläche und das Menü beschränkt. Schaltfläche.
<ph type="x-smartling-placeholder">Sie müssen die
android:keycode
definieren, um den Schlüssel und mindestens einen der weitere drei Attribute, um die Suchaktion zu definieren.Attribute:
android:keycode
- String. (Erforderlich.) Ein Schlüsselcode von
KeyEvent
, die für die Aktionstaste, auf die Sie reagieren möchten, z. B."KEYCODE_CALL"
. Dieses wird hinzugefügt zuACTION_SEARCH
Intent an Ihre suchbare Aktivität übergeben wird. Verwenden Sie zum Prüfen des SchlüsselcodesgetIntExtra(SearchManager.ACTION_KEY)
Nicht alle Tasten werden für Suchaktionen unterstützt, da viele von ihnen für die Eingabe, Navigation oder Systemfunktionen. android:queryActionMsg
- String. Eine Aktionsnachricht, die gesendet wird, wenn die Aktionstaste gedrückt wird, während die
ein Nutzer einen Abfragetext eingibt. Diese wird zur
ACTION_SEARCH
die vom System an Ihre suchbare Aktivität übergeben wird. Verwenden Sie zum Prüfen des StringsgetStringExtra(SearchManager.ACTION_MSG)
android:suggestActionMsg
- String. Eine Aktionsnachricht, die gesendet wird, wenn die Aktionstaste gedrückt wird, während ein
im Fokus. Diese wird dem Intent hinzugefügt, den das System an Ihre
durchsuchbare Aktivität unter Verwendung der Aktion, die Sie für den Vorschlag definieren. Um die
String, verwenden
getStringExtra(SearchManager.ACTION_MSG)
Diese Schaltfläche darf nur verwendet werden, wenn dieser Aktionsschlüssel von allen Vorschlägen unterstützt wird. Falls nicht alle Vorschläge können denselben Aktionsschlüssel verarbeiten. In diesem Fall müssen Sie Folgendes verwenden: Attribut „android:suggestActionMsgColumn
“. android:suggestActionMsgColumn
- String. Der Name der Spalte bei Ihrem Contentanbieter, in der die
Aktionsnachricht für diese Aktionstaste, die gesendet werden soll, wenn der Nutzer die Aktionstaste drückt
wenn ein Vorschlag im Fokus ist. Mit diesem Attribut können Sie die Aktionsschlüssel
für jeden einzelnen Vorschlag zu erstellen.
Attribut
android:suggestActionMsg
, um die Aktionsnachricht für alle zu definieren enthält jeder Eintrag in Ihrem Contentanbieter eine eigene Aktionsnachricht.Zuerst müssen Sie in Ihrem Contentanbieter für jeden Vorschlag eine Spalte definieren für eine Aktionsnachricht und geben Sie den Namen der Spalte in diesem Attribut an. Das System sieht sich den Vorschlagscursor an und verwendet den hier angegebenen String, um eine Aktion auszuwählen Nachricht und wählt dann den Aktionsnachrichtenstring am Cursor aus. Diese Zeichenfolge lautet wird dem Intent hinzugefügt, den das System an Ihre suchbaren Aktivitäten übergibt. Dazu wird die Aktion verwendet, für Vorschläge definieren. Verwenden Sie zum Prüfen des Strings
getStringExtra(SearchManager.ACTION_MSG)
Wenn für den ausgewählten Vorschlag keine Daten vorhanden sind, wird der Aktionsschlüssel ignoriert.
- Beispiel:
- XML-Datei gespeichert unter
res/xml/searchable.xml
:<?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/search_label" android:hint="@string/search_hint" android:searchSuggestAuthority="dictionary" android:searchSuggestIntentAction="android.intent.action.VIEW" android:includeInGlobalSearch="true" android:searchSettingsDescription="@string/settings_description" > </searchable>