检索电话号码时,Android HintPicker 结果为 1002

问题描述

更新:Christopher Bull's answer 去掉不推荐使用的调用。尽管如此,真正的问题仍然是一样的。 (我的设备的 API 级别是 24 和 27)

我的两部手机都工作正常(接听电话等),我真的不明白它怎么找不到电话号码。此外,我无法控制的轻微加载动画真的不鼓励我使用这个 api。是否有任何替代方案(不需要权限)。我也害怕获得 PHONE_READ_STATE 权限,因为我的应用不是消息应用,我不希望它被拒绝,这会发生吗?


我试图在我的 android 应用程序中获取用户的电话号码,而无需请求任何许可。 我看到 HintPickerIntent 用于此目的并决定实现该功能(使用大量已弃用的功能)。

奇怪的是,我用 2 部不同的带有 SIM 卡的真实手机尝试了这个。他们都有一个结果代码 1002 并显示一个进度条,该进度条在没有打开任何弹出窗口的情况下迅速消失。 但是其中一个一个完全空的 Intentaction = android.intent.action.MAIN mLaunchParams = MultiScreenLaunchParams

这是我的代码(它们都在活动中运行,但如果这是我真正怀疑的问题,我可以将其移动到片段..)

 googleapiclient = Googleapiclient.Builder(this)
            .addApi(Auth.CREDENTIALS_API)
            .addConnectionCallbacks((this@MainActivity as Googleapiclient.ConnectionCallbacks))
            .addOnConnectionFailedListener((this@MainActivity as Googleapiclient.OnConnectionFailedListener))
            .build()
        googleapiclient.connect()  //Runs in onCreate

override fun onConnected(p0: Bundle?) {
        val hintRequest = HintRequest.Builder()
            .setPhoneNumberIdentifierSupported(true)
            .build()
        val intent = Auth.CredentialsApi.getHintPickerIntent(
            googleapiclient,hintRequest
        )
        startIntentSenderForResult(
            intent.intentSender,500,null,Bundle()
        )
    }



 override fun onActivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
        super.onActivityResult(requestCode,resultCode,data)
        if (requestCode == 500) {
            if (resultCode == Activity.RESULT_OK) {
                val credential: Credential? = data!!.getParcelableExtra(Credential.EXTRA_KEY)
                val id = credential?.getId()// will need to process phone number string
            }
        }
    }

//build.gradle

 api 'com.google.android.gms:play-services-auth:19.0.0'
    api 'com.google.android.gms:play-services-auth-api-phone:17.5.0'
    implementation 'com.google.android.gms:play-services-identity:17.0.0'
    implementation 'com.google.android.gms:play-services-base:17.0.0'

这是一个新项目,所以我在 build.gradle 中没有其他与 google-play-services 相关的内容。问题可能就像不应用插件一样简单。

Also a related issue in tracker

我使用的两台设备都是三星。如果无法修复,是否还有其他方法可以在未经许可的情况下检索电话号码?如果我获得了手机状态许可,但我的应用程序不是主要的消息应用程序,我可以发布我的应用程序吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)