Integrare Gestore delle credenziali con la compilazione automatica

A partire da Android 15 Beta 2, in combinazione con androidx.credentials:1.5.0-alpha01, gli sviluppatori possono collegare visualizzazioni specifiche come i campi nome utente o password alle richieste di Credential Manager. Quando l'utente si concentra su una di queste visualizzazioni, la richiesta corrispondente viene inviata a Credential Manager. Le credenziali risultanti vengono aggregate tra i vari fornitori e visualizzate nelle UI di compilazione automatica, ad esempio nei suggerimenti in linea della tastiera o nei suggerimenti dei menu a discesa. Questa funzionalità può essere utilizzata come fallback quando gli utenti chiudono accidentalmente il selettore dell'account di Credential Manager e poi toccano i campi pertinenti.

La libreria Jetpack androidx.credentials è l'endpoint preferito per gli sviluppatori da utilizzare per questa funzionalità.

Illustrazione che mostra le credenziali nei risultati della compilazione automatica
Figura 1: risultati della compilazione automatica con le credenziali che utilizzano password, passkey e Accedi con Google.

Implementazione

Per utilizzare Credential Manager per mostrare le credenziali nei risultati di compilazione automatica, utilizza l'implementazione standard per creare un GetCredentialRequest e poi impostalo sulle visualizzazioni pertinenti. La gestione delle risposte è la stessa, indipendentemente dal fatto che la risposta provenga dalla chiamata API getCredential o da PendingGetCredentialRequest, come mostrato nell'esempio seguente.

Innanzitutto, crea un GetCredentialRequest:

// Retrieves the user's saved password for your app.
val getPasswordOption = GetPasswordOption()

// Get a passkey from the user's public key credential provider.
val getPublicKeyCredentialOption = GetPublicKeyCredentialOption(
  requestJson = requestJson
)

val getCredRequest = GetCredentialRequest(
  listOf(getPasswordOption, getPublicKeyCredentialOption)
)

Successivamente, chiama l'API getCredential. Viene visualizzato il selettore di Credential Manager.

coroutineScope {
  try {
    val result = credentialManager.getCredential(
      context = activityContext, // Use an activity-based context.
      request = getCredRequest
    )
    handleSignIn(result);
  } catch (e: GetCredentialException) {
    handleFailure(e);
  }
}

Infine, attiva l'esperienza di compilazione automatica. Imposta getCredRequest sulle visualizzazioni pertinenti (ad esempio username, password) per attivare i risultati delle credenziali nella compilazione automatica quando l'utente interagisce con queste visualizzazioni.

usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
  getCredRequest) { response -> handleSignIn(response)
}

passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
  getCredRequest) { response -> handleSignIn(response)
}