Integrare la compilazione automatica con IME e servizi di compilazione automatica

A partire da Android 11, le tastiere e altri editor di metodi di input (IME) possono visualizzare i suggerimenti della compilazione automatica in linea, in una striscia di suggerimenti o in modo simile, anziché in un menu. Poiché questi suggerimenti di compilazione automatica possono contenere dati privati, come password o dati della carta di credito, i suggerimenti vengono nascosti all'IME finché l'utente non ne seleziona uno. Aggiorna i metodi di input e i servizi di compilazione automatica, come i gestori delle password, per utilizzare questa funzionalità. Se un IME o un servizio di compilazione automatica non supporta la compilazione automatica in linea, i suggerimenti vengono mostrati in un menu, come nelle versioni precedenti ad Android 11.

Flusso di lavoro

In questo flusso, IME indica la tastiera corrente o un altro editor di input, mentre fornitore di suggerimenti indica il fornitore appropriato del suggerimento di compilazione automatica. A seconda del campo di input 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 input che attiva la compilazione automatica, ad esempio un campo di input per la password o la carta di credito.

  2. La piattaforma esegue query sull'IME corrente e sul provider di suggerimenti appropriato per verificare se supportano il completamento automatico in linea. Se l'IME o il provider di suggerimenti non supporta il riempimento automatico incorporato, il suggerimento viene mostrato in un menu, come su Android 10 e versioni precedenti.

  3. La piattaforma chiede al metodo di input di fornire una richiesta di suggerimento. Questa richiesta di suggerimenti specifica il numero massimo di suggerimenti da visualizzare e fornisce anche le specifiche di presentazione per ogni suggerimento. Le specifiche della presentazione specificano elementi come dimensioni massime, dimensioni del testo, colori e dati dei caratteri, consentendo al fornitore di suggerimenti di abbinare l'aspetto e l'esperienza utente dell'IME.

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

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

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

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

Configurare i metodi di input per supportare la compilazione automatica in linea

Questa sezione descrive come configurare l'IME per supportare il completamento automatico in linea. Se il tuo IME non supporta la compilazione automatica in linea, la piattaforma mostra i suggerimenti per la compilazione automatica in un menu.

Il tuo 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 metodo InputMethodService.onCreateInlineSuggestionsRequest() dell'IME. Devi implementare questo metodo. Restituisci un InlineSuggestionsRequest specificando quanto segue:

  • Il numero di suggerimenti che vuole il tuo IME.
  • **Un InlinePresentationSpec per ogni suggerimento, che definisce come deve essere presentato il suggerimento.

Quando la piattaforma ha dei suggerimenti, chiama il metodo onInlineSuggestionsResponse() dell'IME, passando un InlineSuggestionsResponse contenente i suggerimenti. Devi implementare questo metodo. Nell'implementazione, chiama InlineSuggestionsResponse.getInlineSuggestions() per ottenere l'elenco dei suggerimenti, quindi espandi ogni suggerimento chiamando il relativo metodo InlineSuggestion.inflate().

Configurare i servizi di compilazione automatica per supportare la compilazione automatica in linea

Questa sezione descrive come configurare il servizio di compilazione automatica per supportare la compilazione automatica incorporata. Se la tua app non supporta il riempimento automatico incorporato, la piattaforma mostra i suggerimenti per il riempimento automatico 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 la tastiera IME ha bisogno di suggerimenti per la compilazione automatica, la piattaforma chiama il metodo onFillRequest() del servizio di compilazione automatica, proprio come nelle versioni precedenti ad Android 11. Tuttavia, il tuo servizio deve chiamare il metodo getInlineSuggestionsRequest() dell'oggetto FillRequest passato. Questo recupera InlineSuggestionsRequest creato dall'IME. InlineSuggestionsRequest specifica il numero di suggerimenti in linea necessari e come deve essere presentato ciascuno. Se l'IME non supporta i suggerimenti in linea, il metodo restituisce null.

Il servizio di compilazione automatica crea oggetti InlinePresentation, fino al numero massimo richiesto in InlineSuggestionsRequest. Le presentazioni devono rispettare i vincoli di dimensione specificati da 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.