2014-10-29 5 views
7

Ich implementiere Google+ über die Entwicklerdokumentation. Meine onConnectionFailed Methoden wird aufgerufen, nachdem ich ein Konto mit dem Fehler RESOLUTION_REQUIRED (Fehlercode 6) anmelden. Dies startet einen weiteren "Choose a Account" -Dialog, der dann funktioniert (führt mich zu den Berechtigungen), wenn ich das selbe Konto auswähle. Ich bin nicht sicher, warum es einen anderen Dialog auffordert. Ich beginne mit resolveSignInError Irgendwelche Einblicke?Google Plus-Anmeldedialogfeld "Konto auswählen" wird zweimal angezeigt

Auch die Auswahl eines Kontos aus "Wählen Sie ein Konto" zeigt Berechtigungen, wenn ich an diesem Punkt abbrechen und wählen Sie ein anderes Konto aus der Wahl, es zeigt das falsche Bild für die Berechtigungen oder manchmal überhaupt kein Bild. Ich habe auch An internal error has occurred Toast einmal bekommen.

Antwort

1

Der folgende Code funktioniert gut für mich, bitte aktualisieren Sie Ihre damit und überprüfen.

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(); 
      } 
     } 
    } 
2

In "onActivityForResult", sollten Sie die erste Zeile entfernen "super.onActivityResult (requestCode, Result, Daten);"

Auch, nur um sicher zu sein, Sie erstellen Ihren GoogleApiClient in onCreate, verbinden Sie es in onStart() und trennen Sie es in onStop()?

Rufen Sie resolveSignInError() von irgendwo anders in Ihrem Code auf?

+0

Vielen Dank. Ich hatte eine super.onActivityForResult() und löschte es (bzw. nur aufrufen, wenn ich das Ergebnis nicht selbst behandelt habe) das Problem gelöst. – Ridcully

0

Funktion in getprofilinfo() eingeben. Wie das. Hoffe, dieser Code kann Ihnen helfen

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(); 
     } 
    } 
Verwandte Themen