Android システムの支援を受けた検索を実装する(つまり、検索機能を提供する)
アクティビティに検索クエリを追加したり、検索候補を表示したりする。そのため、アプリには検索
XML ファイル形式で取得できます。
このページでは、検索構成ファイルの構文と使用法について説明します。詳細
アプリケーションに検索機能を実装する方法については、
検索インターフェースを作成します。
- ファイルの場所:
res/xml/filename.xml
Android はファイル名をリソース ID として使用します。
- 構文:
-
<?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>
- 要素:
-
<searchable>
- Android システムが検索アシストを提供するために使用するすべての検索構成を定義します。
属性:
android:label
- 文字列リソース。(必須)。アプリケーションの名前。これは、
アプリケーションの
android:label
属性に適用された名前
<activity>
または
<application>
使用します。このラベルは、管理者が
android:includeInGlobalSearch
から "true"
に変更。その場合、このラベルが使用されます。
を使用して、システムの検索設定でアプリが検索可能なアイテムとして識別されるようにします。
android:hint
- 文字列リソース。(推奨)。次の場合に検索テキスト フィールドに表示するテキスト
テキストは入力されません。検索可能なコンテンツに関するヒントをユーザーに提供します。一貫性を保つため
他の Android アプリの場合、
android:hint
の文字列は「Search」、
<content-or-product>"例: 「曲やアーティストを検索」または
「YouTube を検索」
android:searchMode
- キーワード。検索の表示形式を制御する追加のモードを設定します。使用可能
モードは、カスタム候補が受け取ったときにクエリテキストを書き換える方法を定義します。
焦点を当てます次のモード値を使用できます。
詳細については、このモジュールで紹介するクエリテキストの書き換えに関する
カスタムの検索候補を追加する
android:searchButtonText
- 文字列リソース。検索の実行ボタンに表示するテキスト。方法
デフォルトでは、このボタンには検索アイコン(虫メガネ)が表示されます。このアイコンは、
あります。そのため、ボタンの変更にこの属性を使用しないでください。ただし、
検索以外の動作(ウェブブラウザで URL リクエストなど)を使用することです。
android:inputType
- キーワード。使用する入力方法のタイプ(ソフトのタイプなど)を定義します。
できます。自由形式のテキストが想定されるほとんどの検索で、この属性は必要ありません。
詳しくは、
inputType
をご覧ください。
指定します。
android:imeOptions
- キーワード。入力方法の追加オプションを指定します。ほとんどの検索では、
指定する場合は、この属性は必要ありません。デフォルトの IME は
actionSearch
: 「search」を提供します。ボタンではなく、
使用できます。imeOptions
を参照
で、この属性に適した値の一覧をご覧ください。
検索候補の属性
検索候補を生成するコンテンツ プロバイダを定義する場合は、
コンテンツ プロバイダとの通信を構成する追加の属性。検索を指定する場合
次の <searchable>
属性が必要です。
android:searchSuggestAuthority
- 文字列。(検索候補を指定する場合は必須)。この値は、
android:authorities
で提供される権限文字列
Android マニフェストの <provider>
要素の属性です。
android:searchSuggestPath
- 文字列。このパスは候補の一部として使用されます
接頭辞と「
Uri
」の後に
標準の候補パスの前に挿入します。これは、
1 つのコンテンツ プロバイダがさまざまなタイプの提案(たとえば、
また、受け取った候補のクエリの曖昧さを取り除く方法が必要です。
できます。
android:searchSuggestSelection
- 文字列。この値は
クエリ関数を
selection
パラメータとして渡します。通常、これは WHERE 句
そのデータベースの URL のプレースホルダとして疑問符を 1 つ
ユーザーが入力した実際のクエリ文字列(例: "query=?"
)。ただし、
また、null 以外の任意の値を使用して、
selectionArgs
パラメータを指定し、selection
パラメータを無視します)。
android:searchSuggestIntentAction
- 文字列。ユーザーがアクションを実行したときに使用されるデフォルトのインテントのアクション
カスタムの検索候補(
"android.intent.action.VIEW"
など)をタップしたとき。
選択した候補によってこの値がオーバーライドされない場合は、
SUGGEST_COLUMN_INTENT_ACTION
列の場合、値はアクション フィールドの
ユーザーがタップすると Intent
提案します。
android:searchSuggestIntentData
- 文字列。デフォルトのインテント データは、ユーザーが
カスタム検索候補をタップしたとき
選択した候補によってオーバーライドされない場合は、
SUGGEST_COLUMN_INTENT_DATA
列の値は、UDM データの
ユーザーがタップすると Intent
提案します。
android:searchSuggestThreshold
- 整数。最小文字数は、
候補の検索をトリガーしますシステムが個人情報をクエリしないことが
しきい値より短い場合は
コンテンツプロバイダに通知されますデフォルト値は 0 です。
検索候補の上記の属性について詳しくは、ドキュメントをご覧ください
カスタム検索候補の追加、
カスタム候補の追加。
クイック検索ボックスの属性
クイック検索ボックスでカスタムの検索候補を利用できるようにするには、
次の <searchable>
属性:
android:includeInGlobalSearch
- ブール値。(
クイック検索ボックス] をクリックします)。候補を表示する場合は
"true"
に設定します
グローバルにアクセス可能なクイック検索ボックスに表示されます。ユーザーは、
更新する前に、システム検索設定でアプリケーションを検索可能なアイテムとして有効にすることも可能
検索候補がクイック検索ボックスに表示されます。
android:searchSettingsDescription
- 文字列リソース。表示される検索候補の簡単な説明を
に入力すると、クイック検索ボックスが検索可能なアイテム エントリに表示されます。
説明します。説明では、検索可能なコンテンツを簡潔に説明する必要があります。対象
(例:「アーティスト、アルバム、トラック」)または [保存したメモ]を
メモ帳アプリケーション。
android:queryAfterZeroResults
- ブール値。コンテンツ プロバイダを次のとおりにする場合は、
"true"
に設定します。
は、それまで結果が 0 件の結果を返したクエリのスーパーセットに対して呼び出されます。たとえば
コンテンツ プロバイダが「bo」に対して返す結果は 0 件なので、「bob」に対して再クエリする必要があります。条件
"false"
に設定した場合、単一のセッション「bob」ではスーパーセットが無視されます。
再クエリは発生しませんこの操作は、検索ダイアログの存続期間または
アクティビティを表示することもできます。検索ダイアログまたは検索アクティビティを再度開くと、
「bo」コンテンツ プロバイダに再度クエリします。デフォルト値は false です。
音声検索の属性
音声検索を有効にするには、
次の <searchable>
属性:
android:voiceSearchMode
- キーワード。(音声検索機能を利用する場合は必須)。
音声検索の特定のモードで、音声検索を有効にします。
デバイスで音声検索が提供されていない可能性があります。その場合、次のフラグが表示されます。
効果はありません。次のモード値を使用できます。
値 | 説明 |
"showVoiceSearchButton" |
デバイスで音声検索を使用できる場合に音声検索ボタンを表示します。設定すると、
"launchWebSearch" または "launchRecognizer" も設定する必要があります。
パイプ(| )で区切ります。 |
"launchWebSearch" |
音声検索ボタンを押すと、ユーザーが
組み込みの音声検索アクティビティに
誘導しますこのフラグは、
ユーザーは、検索が呼び出されたアクティビティから離れます。 |
"launchRecognizer" |
音声検索ボタンは
組み込みの音声録音アクティビティに直接移動できます。このアクティビティ
ユーザーの話しを促し、音声を文字に起こして、その結果を
クエリテキストを、ユーザーが
検索 UI にアクセスし、検索ボタンをタップしました。 |
android:voiceLanguageModel
- キーワード。この言語モデルは、
音声認識システムで使用する必要があります。指定できる値は次のとおりです。
値 | 説明 |
"free_form" |
自由形式の音声認識を使用してクエリを音声入力します。これは主に
英語向けに最適化されています。これがデフォルトです。 |
"web_search" |
検索に似た短いフレーズの場合にウェブ検索キーワード認識を使用します。これは、
"free_form" 以上の言語でご利用いただけます。 |
詳しくは、
EXTRA_LANGUAGE_MODEL
するとさらに表示
情報です。
android:voicePromptText
- 文字列リソース。音声入力ダイアログに表示する追加メッセージ。
android:voiceLanguage
- 文字列。期待される発話の言語。
Locale
の定数。例:
ドイツ語は "de"
、フランス語は "fr"
です。これは、名前が異なる場合のみ必要です
Locale.getDefault()
の現在の値から計算されます。
android:voiceMaxResults
- 整数。返される結果の最大数を設定します。
「ベスト」を含めこれは常に
ACTION_SEARCH
プライマリ クエリを指定します。1 以上を指定する必要があります。使用
EXTRA_RESULTS
インテントから結果を取得できます
指定されていない場合、返す結果の数を認識ツールが選択します。
<actionkey>
- 検索アクションのデバイスキーと動作を定義します。検索アクションでは、特別な
デバイスのボタンをタップしたときの動作(現在のクエリ、またはフォーカスされているクエリに基づく)
表示されます。たとえば、連絡帳アプリでは、電話を開始するための検索アクションが提供されます。
[CALL] ボタンをタップしたときに、現在フォーカスされている連絡先候補に通話を発信します。
デバイスによっては、使用できないアクションキーもあります。また、ここでオーバーライドできないキーもあります。
できます。たとえば、キーをオーバーライドすることはできず、常にホームに戻す必要があります
表示されます。また、検索の入力に必要なキーにアクションキーを定義しないようにしてください。
なります。これにより、通話ボタンとメニューで使用できる適切なアクションキーが制限されます。
] ボタンを離します。
<ph type="x-smartling-placeholder">
android:keycode
を定義してキーと少なくとも 1 つを定義する必要があります。
その他の 3 つの属性を使用して検索アクションを定義します。
属性:
android:keycode
- 文字列。(必須)。Google Cloud からのキーコード
次を表す
KeyEvent
応答するアクションキー(例: "KEYCODE_CALL"
)。この
は
ACTION_SEARCH
渡されるインテントです。キーコードを調べるには、次のコマンドを使用します。
getIntExtra(SearchManager.ACTION_KEY)
。
一部のキーは検索アクションで使用できません。ほとんどのキーは入力、
ナビゲーション、システムの機能などを
サポートしています
android:queryActionMsg
- 文字列。呼び出し中にアクションキーが押された場合に送信されるアクション メッセージ。
ユーザーがクエリテキストを入力しています。これは
ACTION_SEARCH
インテントを渡します。文字列を調べるには、次のコマンドを使用します。
getStringExtra(SearchManager.ACTION_MSG)
。
android:suggestActionMsg
- 文字列。アクション キーが押されたときに送信されるアクション メッセージ。
候補がフォーカスされていますこれは、システムが渡したインテントに
その候補に対して定義したアクションを使用します。kubectl コマンドの
使用する場合は、
getStringExtra(SearchManager.ACTION_MSG)
。
これは、すべての提案がこのアクションキーをサポートしている場合にのみ使用してください。すべてではありませんが、
複数の候補で同じアクションキーを処理したい場合は、代わりに次を使用する必要があります。
android:suggestActionMsgColumn
属性。
android:suggestActionMsgColumn
- 文字列。カスタム ディメンションを定義するコンテンツ プロバイダの列の名前
このアクションキーのアクション メッセージ。ユーザーがアクションキーを押した場合に送信されます。
選択することもできますこの属性を使用すると、デバイスのアクションキーを制御し、
提案を使用するため、
すべてのアクション メッセージを定義する
android:suggestActionMsg
属性
コンテンツ プロバイダの各エントリは、それぞれ独自のアクション メッセージを提供します。
まず、各候補に対してコンテンツ プロバイダで列を定義して、
アクション メッセージを入力し、その列の名前をこの属性に指定します。システム
候補のカーソルを確認し、ここで提供された文字列を使用してアクションを選択します
message 列を選択してカーソルからアクション メッセージの文字列を選択します。この文字列は、
ユーザーが検索可能なアクティビティに渡すインテントに追加されているアクション
定義できます。文字列を調べるには、次のコマンドを使用します。
getStringExtra(SearchManager.ACTION_MSG)
。
選択した候補のデータが存在しない場合、アクションキーは無視されます。
- 例:
res/xml/searchable.xml
に保存された 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>