2017-01-15 2 views
0

Ich habe ein wirklich albernes Problem in der Google Play Games-API. Wenn ein Nutzer beitritt, muss er erneut auf das Anmelden klicken angemeldet.Google Play Games meldet sich beim ersten Versuch nicht, Erfolg beim zweiten

Ich habe die automatische Anmeldung beim Start. Wenn der Benutzer die App öffnet, wird der Anmeldedialog angezeigt, eine E-Mail ausgewählt und anschließend ohne Nachricht geschlossen. Danach muss der Benutzer auf die Anmeldung klicken erneut zu unterschreiben.

Also, es ist unbekannt, warum es passiert, das beliebte Problem, das Leute haben, ist nicht Anmelden, aber das ist bei dem ersten Versuch scheitern.

Mein Code:

public class MainActivity extends FragmentActivity implements 
    View.OnClickListener,GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ 

private GoogleApiClient mGoogleApiClient; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(Games.API) 
      .addScope(Games.SCOPE_GAMES) 
      .build(); 

} 

@Override 
protected void onStart(){ 
    super.onStart(); 
    mGoogleApiClient.connect(); 
} 


@Override 
protected void onStop() { 
    super.onStop(); 
    if (mGoogleApiClient.isConnected()) { 
     mGoogleApiClient.disconnect(); 
    } 
} 


@Override 
public void onConnected(@Nullable Bundle bundle) { 

} 


@Override 
public void onConnectionSuspended(int i) { 
    mGoogleApiClient.connect(); 
} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 

    if (connectionResult.hasResolution()) { 
     try { 
      connectionResult.startResolutionForResult(this, 2); 
     } catch (IntentSender.SendIntentException e) { 
      mGoogleApiClient.connect(); 
     } catch (Exception e) { 
      startActivityForResult(null, 3); 
     } 
    } 

} 

Antwort

1

Sie haben mGoogleApiClient.connect() in Ihrem onActivityResult() Methode aufzurufen:

@Override 
protected void onActivityResult(int request, int response, Intent data) { 
    super.onActivityResult(request, response, data); 
    mGoogleApiClient.connect(); 
} 

Wie sonst ist das Ergebnis von connectionResult.startResolutionForResult nicht den GoogleApiClient Zustand nicht aktualisiert.

+0

Danke für die Antwort, es gibt eine Sache zu beachten, wenn es kein WiFi gibt oder es ein Fehler beim Anmelden gibt, wird das SIGN-IN-Ding immer wieder durchlaufen, gibt es einen besseren Weg, damit umzugehen Schleife als mit einem booleschen? – Jaeger

+1

Sie möchten wahrscheinlich den robusteren Code, den sie durchlaufen, auf dem [Play Games-Handbuch initialisieren] (https://developers.google.com/games/services/android/init) verwenden, das zwei boolesche Werte verwendet: 'mAutoStartSignInflow' und 'mSignInClicked' als Wächter für die Arbeit an' onConnectionFailed'. – ianhanniballake

Verwandte Themen