startIntentSenderForResult 已弃用 Android [英] startIntentSenderForResult deprecated Android

查看:170
本文介绍了startIntentSenderForResult 已弃用 Android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

代码片段:

private fun requestHint() {
    val hintRequest = HintRequest.Builder()
        .setPhoneNumberIdentifierSupported(true)
        .build()
    val credentialsClient = Credentials.getClient(this)
    val intent = credentialsClient.getHintPickerIntent(hintRequest)
    try {
        startIntentSenderForResult(
            intent.intentSender,
            CREDENTIAL_PICKER_REQUEST,
            null, 0, 0, 0
        )
    } catch (e: IntentSender.SendIntentException) {
        e.printStackTrace()
    }
}

我试图解决这个问题,来自文档 但我没看懂

I tried to resolve this, from documentation but I didn't understand

如果有人知道如何解决,请帮忙
谢谢

If anyone knows how to resolve it please help
Thanks

推荐答案

使用下面的代码 -

private fun showPhoneNumberSuggestion() {

    val hintRequest = HintRequest.Builder()
        .setPhoneNumberIdentifierSupported(true)
        .build()

    val options = CredentialsOptions.Builder()
        .forceEnableSaveDialog()
        .build()

    // Then pass the hint request object to
    // credentialsClient.getHintPickerIntent()
    // to get an intent to prompt the user to
    // choose a phone number.

    val credentialClient = Credentials.getClient(applicationContext, options)
    val intent = credentialClient.getHintPickerIntent(hintRequest)
    try {

        val intentSenderRequest = IntentSenderRequest.Builder(intent.intentSender).build()
        phonePickIntentResultLauncher.launch(intentSenderRequest)

    } catch (e: IntentSender.SendIntentException) {
        e.printStackTrace()
    }
}

对于 ActivityResult,使用 -

For ActivityResult, use -

private val phonePickIntentResultLauncher =
    registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { result ->
        if (result != null) {
            val intent = result.data
            val credential = intent?.getParcelableExtra<Credential>(Credential.EXTRA_KEY)
            binding.inputPhone.setText(credential?.id)
        }
    }

记住没有请求代码.

为每个特定任务使用不同的结果启动器.

Use different result launchers for every particular task.

这篇关于startIntentSenderForResult 已弃用 Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆