当使用谷歌短信检索器API中的代码首先抓取设备的电话号码时,对话框会显示一个加载微调器,然后迅速消失。在 onActivityResult 中,结果代码为 1002,目的为空。没有此错误代码的文档。我使用的确切代码是
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();
如果我设置为真正的电子邮件地址识别支持,或者甚至只是取消注释 setAccountType,那么提示请求将正确显示电子邮件帐户并将名称和电子邮件返回给应用程序,但同时启用两者不会导致凭据 ID 是电话号码,如 1
这是从片段调用的,但是从任何位置调用各种startIntentSenderForResult都没有区别。
谷歌提供的HintRequest api尚未完全完成其功能并且存在大量错误,正如开发人员所说,它在Google设备中工作正常"OEM问题,他们的像素或nexus手机运行良好。
https://issuetracker.google.com/issues/77884951 .
https://github.com/googlesamples/android-credentials/issues/27
许多应用程序仍在使用它来处理具有自己的逻辑的特殊情况,例如配置文件页面上的myntra验证号码功能。
> resultCode = 1002 表示 ACTIVITY_RESULT_NO_HINTS_AVAILABLE
(活动结果代码表示没有可用的提示)
参考文档> 凭据API
要仅通过电话显示提示,请尝试仅使用setPhoneNumberIdentifierSupported(true)
:
HintRequest hintRequest = new HintRequest.Builder()
.setPhoneNumberIdentifierSupported(true)
.build();
此外,请尝试在具有其他帐户的设备上进行测试。