android - 如何在 Jetpack Compose 中处理 ResolvableApiException?
问题描述
我正在尝试CredentialRequest
在我的可组合物中实现一个,但我无法让ResolvableApiException
处理工作。
我已经创建了一个ActivityResultLauncher
usingrememberLauncherForActivityResult
并且我从OnCompleteListener
开始调用它,PendingIntent
如下所示。
我希望这能奏效,但由于某种原因,我从未收到ActivityResult
.
val launcher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.StartIntentSenderForResult()
) {
if (it.resultCode != RESULT_OK) {
return@rememberLauncherForActivityResult
}
// Handling ActivityResult here
}
val context = LocalContext.current
LaunchedEffect(Unit) {
val credentialsRequest = CredentialRequest.Builder()
.setAccountTypes("https://signin.example.com")
.build()
val credentialsClient = Credentials.getClient(context)
// Read the stored credential if user already signed in before
credentialsClient.request(credentialsRequest).addOnCompleteListener {
val result = try {
it.result?.credential?.id
} catch (exception: Exception) {
val resolvableException = exception.cause as? ResolvableApiException
if (resolvableException === null) {
// Exception not resolvable
return@addOnCompleteListener
}
// User must sign in first
launcher.launch(
IntentSenderRequest.Builder(resolvableException.resolution)
.build()
)
return@addOnCompleteListener
}
// Handling result here
}
}
我猜这可能与launcher
由于重组而过时有关,但我不确定这是否可能。
我需要做什么才能收到ActivityResult
?
解决方案
推荐阅读
- django-rest-framework - 如何在 django rest 框架中更新和删除数据
- jenkins - 在 Jenkins 中使用声明式 linter
- c# - 通过插件在用户周历日历上设置观察业务关闭
- mongodb - 用于对 BIG 集合进行过滤和排序的 Mongodb 复合索引
- java - 如何处理 org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs() 的结果
- mysql - 使用 JSON_SEARCH 匹配 json 数据中的整数
- reactjs - 状态的浅拷贝会产生错误吗?
- python - 是否可以使用烧瓶模板在网格/表格中显示产品?
- angular - 当用户使用 Angular PWA 离线时如何处理身份验证?
- kubernetes - 使用 KUBE_PING 缩小后,Wildfly 中重复出现警告消息