Я разрабатываю приложение Kotlin, использующее Jetpack Credential Manager API.
Я успешно протестировал аутентификацию на различных физических устройствах, но столкнулся со странным поведением при тестировании на Samsung моего друга. S23 Ultra.
При запуске запроса getCredential ничего не происходит, никаких исключений не выдается, никаких результатов не возвращается, и я не вижу никаких журналов в Logcat. Важно отметить, что тот же код корректно работает на других устройствах под управлением Android 14.
Это тестовое задание, которое я создал
class MainActivity : ComponentActivity() {
private lateinit var credentialManager: CredentialManager;
private val coroutineScope = CoroutineScope(Dispatchers.Main)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
credentialManager = CredentialManager.create(this.baseContext)
setContent {
...
coroutineScope.launch {
withContext(Dispatchers.Main) {
login("client_id")
}
}
}
}
suspend fun login(serverClientId: String) {
val requestBuilder = GetCredentialRequest.Builder()
requestBuilder.addCredentialOption(
GetGoogleIdOption.Builder().setFilterByAuthorizedAccounts(false)
.setAutoSelectEnabled(false).setServerClientId(serverClientId).build()
)
requestBuilder.addCredentialOption(GetPasswordOption())
try {
val response = credentialManager.getCredential(this, requestBuilder.build())
val credential = response.credential
} catch (e: Throwable) {
print(e.message)
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/776 ... -s23-ultra