web-dev-qa-db-ja.com

Play Services Hint Requestは、要求されたときに電話番号を表示できません

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を呼び出しても違いはありません。

14
sbaar

Googleが提供するHintRequest apiは、その機能を完全には達成しておらず、バグが多く、開発者が「ピクセルまたはネクサス電話がうまく機能しているというOEMの問題」のように、googleデバイスでは問題なく動作します。

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

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

多くのアプリは、プロファイルページにあるmyntra検証番号機能などの独自のロジックで例外的なケースを処理しながら、まだそれを使用しています。

8
Mohit Singh

resultCode = 1002は_ACTIVITY_RESULT_NO_HINTS_AVAILABLE_を意味します(利用可能なヒントがないことを示すアクティビティ結果コード)

APIリファレンスドキュメント> CredentialsApi

電話のみでヒントを表示するには、setPhoneNumberIdentifierSupported(true)のみを使用してみてください:

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

また、他のアカウントを持つデバイスでテストしてみてください。

5
acbelter