7
votes

Connexion Google Plus Connectez-vous dans la boîte de dialogue "Choisir un compte" apparaît deux fois

Je suis implémentant Google+ Connectez-vous via la documentation du développeur. Mon OnconnectionFailed Méthodes est appelé après que je choisis un compte à vous connecter avec l'erreur résolution_requiked (code d'erreur 6). Cela lance une autre boîte de dialogue "Choisir un compte" qui fonctionne alors (me prend aux autorisations) si je sélectionne le même compte. Je ne sais pas pourquoi il incite une autre boîte de dialogue. Je commence par résolvesigninerror toute idée?

En outre, la sélection d'un compte de "Choisir un compte" affiche les autorisations, si je frappe Annuler à ce point et sélectionnez un autre compte dans la cadran, il affiche le problème. image pour les autorisations ou parfois aucune image du tout. J'ai également eu une erreur interne a eu lieu toast une fois. xxx


0 commentaires

3 Réponses :


1
votes

Le code suivant fonctionne bien pour moi, veuillez mettre à jour le vôtre avec elle et vérifier.

private void resolveSignInError() {
        if (mConnectionResult.hasResolution()) {
            try {
                mIntentInProgress = true;
                mConnectionResult.startResolutionForResult(this, RC_SIGN_IN);
            } catch (SendIntentException e) {
                mIntentInProgress = false;
                mGoogleApiClient.connect();
            }
        }
    }

    @Override
    public void onConnectionFailed(ConnectionResult result) {
        if (!result.hasResolution()) {
            GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this, 0).show();
            return;
        }

        if (!mIntentInProgress) {

            mConnectionResult = result;

            if (mSignInClicked) {

                resolveSignInError();
            }
        }

    }

    @Override
    protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
        if (requestCode == RC_SIGN_IN) {
            if (responseCode != RESULT_OK) {
                mSignInClicked = false;
            }

            mIntentInProgress = false;

            if (!mGoogleApiClient.isConnecting()) {
                mGoogleApiClient.connect();
            }
        }
    }


0 commentaires

2
votes

dans "Onactitenitforresult", vous devez supprimer la première ligne "Super.OntacivityResult (DemandeCode, résultat, données);"

Aussi, juste pour être sûr, vous créez votre googleapiclient dans Oncreate, connectez-le dans OnStart () et déconnectez-le dans OnStop ()?

Appelez-vous Resolvesigninerror () de n'importe où ailleurs dans votre code?


1 commentaires

Merci. J'ai eu un Super.AccurityForresult () et le retire (resp. L'appelant que lorsque je n'ai pas géré le résultat moi-même) a résolu le problème.



0
votes

Entrez la fonction d'identification dans getProfileInformation (). Comme ça.Hope, ce code peut vous aider

 private void getProfileInformation() {
        try {
            if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
                Person currentPerson = Plus.PeopleApi
                        .getCurrentPerson(mGoogleApiClient);
                String personName = currentPerson.getDisplayName();
                String personPhotoUrl = currentPerson.getImage().getUrl();
                String personGooglePlusProfile = currentPerson.getUrl();
                String email = Plus.AccountApi.getAccountName(mGoogleApiClient);

                forget_login_txt.setText(personName+"   "+email);
                Log.e(TAG, "Name: " + personName + ", plusProfile: "
                        + personGooglePlusProfile + ", email: " + email
                        + ", Image: " + personPhotoUrl);


                personPhotoUrl = personPhotoUrl.substring(0,
                        personPhotoUrl.length() - 2)
                        + PROFILE_PIC_SIZE;


                signOutFromGplus();



            } else {
                Toast.makeText(getApplicationContext(),
                        "Person information is null", Toast.LENGTH_LONG).show();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


0 commentaires