Integrare la compilazione automatica con IME e servizi di compilazione automatica

A partire da Android 11, le tastiere e altri editor di metodi di inserimento (IME) possono mostrare i suggerimenti di compilazione automatica in linea, in una barra dei suggerimenti o in modo simile, anziché visualizzare i suggerimenti in un menu. Dal giorno questi suggerimenti di compilazione automatica possono contenere dati privati, come password i dati della carta di credito, i suggerimenti sono nascosti dall'IME finché l'utente ne seleziona una. Aggiorna gli IME e i servizi di compilazione automatica, come i gestori delle password, per utilizzare questa funzione. Se un IME o un servizio di compilazione automatica non supporta la compilazione automatica in linea, i suggerimenti vengono visualizzati in un menu, come nelle versioni precedenti ad Android 11.

Flusso di lavoro

In questo flusso, con IME si intende la tastiera corrente o un altro editor di input, e fornitore di suggerimenti indica il fornitore appropriato del suggerimento di compilazione automatica. A seconda del campo di immissione e delle impostazioni dell'utente, il fornitore di suggerimenti potrebbe essere la piattaforma o un servizio di compilazione automatica.

  1. L'utente si concentra su un campo di immissione che attiva la compilazione automatica, ad esempio un campo di immissione della password o della carta di credito.

  2. La piattaforma esegue query sull'IME corrente e sul fornitore di suggerimenti appropriato per vedere se supportano la compilazione automatica in linea. Se l'IME o il fornitore di suggerimenti non supporta la compilazione automatica in linea, il suggerimento viene visualizzato in un menu, come su Android 10 e versioni precedenti.

  3. La piattaforma chiede all'IME di fornire una richiesta di suggerimento. Questo suggerimento specifica il numero massimo di suggerimenti da visualizzare e anche fornisce le specifiche di presentazione per ogni suggerimento. Specifiche della presentazione specificare elementi come dimensioni massime e dimensioni del testo, colori e dati dei caratteri, il fornitore di suggerimenti corrisponda all'aspetto dell'IME.

  4. La piattaforma chiede al fornitore di suggerimenti di fornire fino al numero richiesto di suggerimenti. Ogni suggerimento include un callback per aumentare View contenente l'interfaccia utente del suggerimento.

  5. La piattaforma comunica all'IME che i suggerimenti sono pronti. L'IME viene visualizzato i suggerimenti chiamando il metodo di callback per gonfiare ogni suggerimento View. Per proteggere le informazioni private dell'utente, l'IME non vede i suggerimenti in questa fase.

  6. Se l'utente seleziona uno dei suggerimenti, l'IME viene informato nello stesso modo come se l'utente selezionasse un suggerimento da un menu di sistema.

Le seguenti sezioni descrivono come configurare l'IME o il servizio di compilazione automatica per supportare la compilazione automatica in linea.

Configurare gli IME per supportare la compilazione automatica in linea

Questa sezione descrive come configurare l'IME in modo che supporti la compilazione automatica in linea. Se il tuo IME non supporta la compilazione automatica in linea, per impostazione predefinita la piattaforma mostra i suggerimenti di compilazione automatica in un menu.

L'IME deve impostare l'attributo supportsInlinedSuggestions su true:

<input-method
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

Quando la piattaforma ha bisogno di un suggerimento di compilazione automatica, chiama il tuo IME InputMethodService.onCreateInlineSuggestionsRequest() . Devi implementare questo metodo. Restituisci un InlineSuggestionsRequest che specifica quanto segue:

  • Il numero di suggerimenti che vuoi ricevere dall'IME.
  • Un InlinePresentationSpec per ogni suggerimento, definendo come deve essere presentato.

Quando la piattaforma presenta dei suggerimenti, chiama l'IME onInlineSuggestionsResponse() , passando un InlineSuggestionsResponse che contengono i suggerimenti. Devi implementare questo metodo. Nel tuo implementazione, richiamare InlineSuggestionsResponse.getInlineSuggestions() per ottenere l'elenco dei suggerimenti, quindi gonfia ogni suggerimento richiamando il relativo InlineSuggestion.inflate() .

Configurare i servizi di compilazione automatica in modo da supportare la compilazione automatica in linea

Questa sezione descrive come configurare il servizio di compilazione automatica in modo da supportare la compilazione automatica in linea. Se la tua app non supporta la compilazione automatica in linea, per impostazione predefinita la piattaforma che mostra i suggerimenti di compilazione automatica in un menu.

Il servizio di compilazione automatica deve impostare l'attributo supportsInlinedSuggestions su true:

<autofill-service
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

Quando l'IME ha bisogno di suggerimenti di compilazione automatica, la piattaforma chiama la tua compilazione automatica del servizio onFillRequest() proprio come nelle versioni precedenti ad Android 11. Tuttavia, deve chiamare l'oggetto FillRequest passato getInlineSuggestionsRequest() per ottenere il valore InlineSuggestionsRequest creato dall'IME. La InlineSuggestionsRequest specifica il numero di suggerimenti in linea necessari, come devono essere presentati. Se l'IME non supporta i suggerimenti in linea, Il metodo restituisce null.

Il servizio di compilazione automatica crea InlinePresentation oggetti, fino al numero massimo richiesto nel valore InlineSuggestionsRequest. Le presentazioni devono rispettare le limitazioni di dimensioni specificate dall' InlineSuggestionsRequest. Per restituire i suggerimenti all'IME, chiama Dataset.Builder.setValue() una volta per ogni suggerimento. Android 11 fornisce versioni di Dataset.Builder.setValue() per supportare i suggerimenti in linea.