我正在编写一个 Kotlin 应用程序并使用 Firebase 进行身份验证。正如onActivityResult现在已经过时的那样,我正在尝试将我的应用程序迁移到使用registerForActivityResult. 我有一个指向 Google 帐户功能的链接,它以 Google 登录流程开始,如此处所示。我的代码:
private fun initGoogleSignInClient() =
activity?.let {
// Configure Google Sign In
val gso =
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build()
// Build a GoogleSignInClient with the options specified by gso.
viewModel.googleSignInClient = GoogleSignIn.getClient(it, gso)
}
private fun showLinkWithGoogle() =
startActivityForResult(viewModel.googleSignInClient.signInIntent, RC_LINK_GOOGLE)
initGoogleSignInClient在片段中调用where onCreateView,showLinkWithGoogle当用户点击屏幕上的按钮时调用。这完美地工作。我使用 查找了一个示例,我找到的最好的示例在此页面registerForActivityResult的底部。我添加了这段代码:
private val linkWithGoogle =
registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) {
viewModel.handleGoogleResult(it.data)
}
private fun showLinkWithGoogle() =
linkWithGoogle.launch(IntentSenderRequest.Builder(viewModel.googleSignInClient.signInIntent))
但意识到IntentSenderRequest.Builder需要一个IntentSender而不是一个Intent. 我还没有找到任何关于如何IntentSender从. 谁能提供一个完整的使用示例?IntentGoogleSignInClientregisterForActivityResult(ActivityResultContracts.StartIntentSenderForResult())
非常感谢!