【问题标题】:Play Services Hint Request cannot display phone numbers when requested播放服务提示请求在请求时无法显示电话号码
【发布时间】:2018-04-04 15:33:09
【问题描述】:

当使用google's sms retriever api 中的代码首先获取设备的电话号码时,对话框会显示一个加载微调器,然后很快消失。在 onActivityResult 中,resultCode 为 1002,intent 为空。不存在此错误代码的文档。我使用的确切代码是

        email.setOnClickListener(v -> {

        HintRequest hintRequest = new HintRequest.Builder().setHintPickerConfig(new CredentialPickerConfig.Builder().setPrompt(0).build())
                .setPhoneNumberIdentifierSupported(true)
                .setEmailAddressIdentifierSupported(false)
                //.setAccountTypes(IdentityProviders.GOOGLE)
                .build();

        PendingIntent intent =
                Auth.CredentialsApi.getHintPickerIntent(mGoogleApiClient, hintRequest);
        try {
            startIntentSenderForResult(intent.getIntentSender(),599,null,0,0,0,null);
        } catch (IntentSender.SendIntentException e) {
            Log.e("create", "Could not start hint picker Intent", e);
        }
    });


    mGoogleApiClient =  new GoogleApiClient.Builder(getContext())
            .enableAutoManage(getActivity(),connectionResult -> {
                Timber.e("conenction failed");
            })
            .addApi(Auth.CREDENTIALS_API)
            .addApi(Auth.GOOGLE_SIGN_IN_API)
            .build();

如果我设置为 true EmailAddressIdentifiedSupported 或什至只是取消注释 setAccountTypes,则提示请求将正确显示电子邮件帐户并将名称和电子邮件返回到应用程序,但启用两者不会导致凭据 ID 为电话编号如1

这是从片段调用的,但从任何位置调用各种 startIntentSenderForResult 都没有区别。

【问题讨论】:

  • 您要测试的设备是哪个制造商和运营商?读取某些设备的电话号码时出现一些问题。
  • @StevenSoneff A nexus 6 sprint。但我可以使用 simManager.getRawPhoneNumber() 获取电话号码/国家代码。感谢您的快速回复。
  • @StevenSoneff 重新启动手机不起作用,但删除播放服务本地数据导致它开始工作。希望这只是作为一项新服务的缓存问题?如果它显示一个微调器然后消失,我不愿意使用该功能。我宁愿它只是默默地失败然后迷惑用户。
  • 代表 Kai Jung - 我有完全相同的问题。你解决问题了吗?或者这方面有什么更新吗?从 Play 服务中清除数据无济于事。三星galaxy s6、s7有这个问题,只能在nexus 5x上运行。
  • 我在全新的 Pixel 2 xl 上遇到了同样的错误。甚至在奥利奥模拟器上,通常从模拟器访问 sim 时也会提供电话号码。知道什么时候会解决这个问题@StevenSoneff

标签: android google-api google-signin credentials google-smartlockpasswords


【解决方案1】:

google 提供的 HintRequest api 还没有完全完成它的功能并且有很多错误,它在 google 设备上运行良好,正如开发人员所说的“OEM 问题,他们的像素或 nexus 手机运行良好”。

https://issuetracker.google.com/issues/77884951.

https://github.com/googlesamples/android-credentials/issues/27

许多应用程序仍在使用它来处理具有自己逻辑的异常情况,例如个人资料页面上的 myntra 验证号码功能。

【讨论】:

  • 它甚至不适用于像素,我收到错误1002
  • 嗨@behelit 这对我也不起作用。如果您有任何解决方案,请更新。
  • 像素 3 上的相同问题,android 9.0。结果 1002 没有可用的提示
【解决方案2】:

resultCode = 1002 表示ACTIVITY_RESULT_NO_HINTS_AVAILABLE(活动结果代码表示没有可用的提示)

API Reference Doc > CredentialsApi

要仅通过电话显示提示,请尝试仅使用setPhoneNumberIdentifierSupported(true)

HintRequest hintRequest = new HintRequest.Builder()
.setPhoneNumberIdentifierSupported(true)
.build();

还可以尝试在使用其他帐户的设备上进行测试。

【讨论】:

    猜你喜欢
    • 2021-09-11
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    相关资源
    最近更新 更多