Suchkonfiguration

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:
WertBeschreibung
"queryRewriteFromData" Verwenden Sie den Wert aus der SUGGEST_COLUMN_INTENT_DATA , um den bquery-Text umzuschreiben. Dies darf nur verwendet werden, wenn die Werte in SUGGEST_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 Methode selectionArgs-Parameter und ignorieren dann den selection-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 Methode SUGGEST_COLUMN_INTENT_ACTION wird der Wert im Aktionsfeld der Intent, 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 der Intent, 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:
WertBeschreibung
"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:
WertBeschreibung
"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 von Locale.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 Sie EXTRA_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 zu ACTION_SEARCH Intent an Ihre suchbare Aktivität übergeben wird. Verwenden Sie zum Prüfen des Schlüsselcodes getIntExtra(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 Strings getStringExtra(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>