1 package com.android.credentialmanager.factory 2 3 import android.app.slice.Slice 4 import android.credentials.Credential 5 import androidx.credentials.PublicKeyCredential 6 import androidx.credentials.provider.CredentialEntry 7 import androidx.credentials.provider.CustomCredentialEntry 8 import androidx.credentials.provider.PasswordCredentialEntry 9 import androidx.credentials.provider.PublicKeyCredentialEntry 10 fromSlicenull11fun fromSlice(slice: Slice): CredentialEntry? = 12 try { 13 when (slice.spec?.type) { 14 Credential.TYPE_PASSWORD_CREDENTIAL -> PasswordCredentialEntry.fromSlice(slice)!! 15 16 PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL -> 17 PublicKeyCredentialEntry.fromSlice(slice)!! 18 19 else -> CustomCredentialEntry.fromSlice(slice)!! 20 } 21 } catch (e: Exception) { 22 // Try CustomCredentialEntry.fromSlice one last time in case the cause was a failed 23 // password / passkey parsing attempt. 24 CustomCredentialEntry.fromSlice(slice) 25 }