googleのsms retriever api のコードを使用して、最初にデバイスの電話番号を取得すると、ダイアログが読み込み中のスピナーとともに表示され、その後すぐに消えます。 onActivityResultでは、resultCodeは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();
Trueに設定した場合、EmailAddressIdentifiedSupported OR uncomment setAccountTypesでも、ヒント要求は正しく機能し、メールアカウントを表示し、名前とメールをアプリに返しますが、両方を有効にしても、 1 のように、電話番号になる資格情報ID
これはフラグメントから呼び出されていますが、あらゆる場所からあらゆる種類のstartIntentSenderForResultを呼び出しても違いはありません。
Googleが提供するHintRequest apiは、その機能を完全には達成しておらず、バグが多く、開発者が「ピクセルまたはネクサス電話がうまく機能しているというOEMの問題」のように、googleデバイスでは問題なく動作します。
https://issuetracker.google.com/issues/77884951 。
https://github.com/googlesamples/Android-credentials/issues/27
多くのアプリは、プロファイルページにあるmyntra検証番号機能などの独自のロジックで例外的なケースを処理しながら、まだそれを使用しています。
resultCode = 1002は_ACTIVITY_RESULT_NO_HINTS_AVAILABLE
_を意味します(利用可能なヒントがないことを示すアクティビティ結果コード)
APIリファレンスドキュメント> CredentialsApi
電話のみでヒントを表示するには、setPhoneNumberIdentifierSupported(true)
のみを使用してみてください:
_HintRequest hintRequest = new HintRequest.Builder()
.setPhoneNumberIdentifierSupported(true)
.build();
_
また、他のアカウントを持つデバイスでテストしてみてください。