Android 11 以降、キーボードやその他のインプット メソッド エディタ(IME)は、自動入力候補をシステムがメニューに表示するのではなく、候補領域またはそれに類似するものにインライン表示できます。こうした自動入力候補にはパスワードやクレジット カード情報などのプライベート データが含まれることがあるため、ユーザーが選択するまで、候補は IME に表示されません。この機能を使用するには、IME と自動入力サービス(パスワード マネージャーなど)を更新します。IME または自動入力サービスがインライン自動入力をサポートしていない場合、Android 11 より前のバージョンと同様に、候補はメニューに表示されます。
ワークフロー
このフローで、IME は現在のキーボードまたはその他の入力エディタを意味します。 「Suggestion provider」は、自動入力候補の適切なプロバイダを意味します。 入力フィールドとユーザーの設定に応じて、候補プロバイダはプラットフォームか自動入力サービスになります。
ユーザーが、自動入力をトリガーする入力フィールド(パスワードやクレジット カードの入力フィールドなど)にフォーカスします。
プラットフォームが、現在の IME と該当する候補プロバイダにクエリを行い、インライン自動入力をサポートしているかどうかを確認します。IME または候補プロバイダがインライン自動入力をサポートしていない場合は、Android 10 以前と同様に、候補がメニューに表示されます。
プラットフォームが IME に対し、「候補リクエスト」を提供するよう求めます。この候補リクエストは、表示する候補の最大数を指定し、各候補の「表示仕様」も提供します。プレゼンテーションの仕様 最大サイズ、テキストサイズ、色、フォントデータなどを指定できます。 候補のプロバイダが IME のデザインに合致しているかどうかを確認します。
プラットフォームが候補プロバイダに対し、リクエストされた候補数まで候補を提供するよう求めます。各候補には、候補の UI を含む
View
をインフレートするためのコールバックが含まれます。プラットフォームが IME に対し、候補の準備ができたことを通知します。IME は、コールバック メソッドを呼び出して各候補の
View
をインフレートすることで候補を表示します。個人情報を保護するために、IME はユーザーの個人情報を 提示しますユーザーが候補のいずれかを選択すると、ユーザーがシステム メニューから候補を選択した場合と同様に、IME に通知されます。
以降のセクションでは、インライン自動入力をサポートするように IME または自動入力サービスを構成する方法について説明します。
インライン自動入力をサポートするように IME を構成する
このセクションでは、インライン自動入力をサポートするように IME を構成する方法について説明します。IME がインライン自動入力をサポートしていない場合、プラットフォームはデフォルトで、メニューに自動入力候補を表示します。
IME は supportsInlinedSuggestions
属性を true
に設定する必要があります。
<input-method
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsInlineSuggestions="true"/>
プラットフォームで自動入力候補が必要になると、IME の InputMethodService.onCreateInlineSuggestionsRequest()
メソッドが呼び出されます。このメソッドを実装する必要があります。次のものを指定して、InlineSuggestionsRequest
を返します。
- IME が求める候補の数。
「
InlinePresentationSpec
提案内容の提示方法を定義します。
候補がある場合、プラットフォームは IME の onInlineSuggestionsResponse()
メソッドを呼び出し、候補を含む InlineSuggestionsResponse
を渡します。このメソッドを実装する必要があります。実装で InlineSuggestionsResponse.getInlineSuggestions()
を呼び出して候補のリストを取得し、InlineSuggestion.inflate()
メソッドを呼び出して各候補をインフレートします。
インライン自動入力をサポートするように自動入力サービスを構成する
このセクションでは、インライン自動入力をサポートするように自動入力サービスを構成する方法について説明します。アプリがインライン自動入力をサポートしていない場合、プラットフォームはデフォルトで メニューに自動入力候補を表示する。
自動入力サービスでは、supportsInlinedSuggestions
属性を
true
:
<autofill-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsInlineSuggestions="true"/>
IME が自動入力の候補を必要とする場合、プラットフォームは自動入力機能を呼び出します。
サービスの
onFillRequest()
メソッドを使用します。ただし、サービスは渡された FillRequest
オブジェクトの getInlineSuggestionsRequest()
メソッドを呼び出して、IME によって作成された InlineSuggestionsRequest
を取得する必要があります。「
InlineSuggestionsRequest
は、必要なインライン候補の数を指定します。
それぞれをどのように提示すればよいかですIME がインライン候補に対応していない場合は、
このメソッドは null
を返します。
自動入力サービスは、InlineSuggestionsRequest
でリクエストされた最大数まで InlinePresentation
オブジェクトを作成します。表示は、InlineSuggestionsRequest
で指定されたサイズの制約に従う必要があります。候補を IME に返すには、候補ごとに 1 回 Dataset.Builder.setValue()
を呼び出します。Android 11 では、
Dataset.Builder.setValue()
: インライン候補をサポートします。