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