Integrare la compilazione automatica con IME e servizi di compilazione automatica

A partire da Android 11, le tastiere e altri editor del metodo di immissione (IME) possono visualizzare suggerimenti di compilazione automatica in linea, in una barra di suggerimenti o qualcosa di simile, invece di mostrare i suggerimenti del sistema in un menu. Poiché questi suggerimenti di compilazione automatica possono contenere dati privati, come password o dati della carta di credito, vengono nascosti dall'IME finché l'utente non ne seleziona uno. Per utilizzare questa funzionalità, aggiorna gli IME e i servizi di compilazione automatica, ad esempio i gestori delle password. 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, per IME si intende la tastiera o un altro editor di input corrente, mentre il 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 imposta lo stato attivo su un campo di immissione che attiva la compilazione automatica, ad esempio un campo di immissione password o carta di credito.

  2. La piattaforma interroga l'IME corrente e il fornitore di suggerimenti appropriato per verificare 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 mostrato in un menu, come su Android 10 e versioni precedenti.

  3. La piattaforma chiede all'IME di fornire una richiesta di suggerimento. Questa richiesta di suggerimento specifica il numero massimo di suggerimenti da visualizzare e fornisce anche specifiche di presentazione per ogni suggerimento. Le specifiche della presentazione specificano, ad esempio, dimensioni massime, dimensione del testo, colori e dati dei caratteri, in modo che il fornitore del suggerimento corrisponda all'aspetto e al design dell'IME.

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

  5. La piattaforma informa l'IME che i suggerimenti sono pronti. L'IME mostra i suggerimenti chiamando il metodo di callback per aumentare il valore View di ogni suggerimento. Per proteggere le informazioni private dell'utente, l'IME non rileva i suggerimenti in questa fase.

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

Le seguenti sezioni descrivono come configurare il tuo 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 il tuo IME per supportare 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.

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() del tuo IME. Devi implementare questo metodo. Restituisci un elemento InlineSuggestionsRequest specificando quanto segue:

  • Il numero di suggerimenti richiesti dal tuo IME.
  • Un InlinePresentationSpec per ogni suggerimento, che definisce le modalità di presentazione del suggerimento.

Quando la piattaforma ha suggerimenti, chiama il metodo onInlineSuggestionsResponse() dell'IME, passando un InlineSuggestionsResponse contenente i suggerimenti. Devi implementare questo metodo. Nell'implementazione, chiama InlineSuggestionsResponse.getInlineSuggestions() per visualizzare l'elenco di suggerimenti, poi aumenta 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 in linea. Se la tua app non supporta la compilazione automatica in linea, per impostazione predefinita la piattaforma 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 richiede suggerimenti di 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 per ottenere il valore InlineSuggestionsRequest creato dall'IME. L'elemento InlineSuggestionsRequest specifica il numero di suggerimenti in linea necessari e la modalità di presentazione di 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 dal 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.