我正在开发一个使用 Jetpack Credential Manager API 的 Kotlin 应用程序
我已经在各种物理设备上成功测试了身份验证,但在我朋友的三星 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)
}
}
}
在 S23 Ultra 上面临完全相同的问题。有这方面的更新吗?有没有人找到解决方案,或者我们只能在三星设备上使用旧的 GoogleSign API?