【发布时间】: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