2017-01-15 6 views
0

Google PlayゲームAPIで本当にばかげた問題が発生しました。ユーザーが参加すると再びサインインする必要がありますサインインしました。Google Playゲームが最初の試合でサインインに失敗し、2回目の試合で成功

私は起動時に自動サインインしているので、ユーザーがアプリケーションを開くと、サインインダイアログが表示され、電子メールを選択してメッセージを表示せずに閉じ、その後サインインをクリックする必要があります再び署名される。

だから、なぜ起こっているのか、人々が持っている人気の問題はサインインしていないのですが、これは最初の試行では失敗しています。

マイコード:

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

} 

答えて

1

あなたのonActivityResult()方法でmGoogleApiClient.connect()を呼び出す必要があり:GoogleApiClient状態を更新しないconnectionResult.startResolutionForResultからそうでない場合はその結果

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

+0

Wi-Fiが存在しない場合やサインインにエラーがある場合、サインインの問題が何度も繰り返されますが、これを処理するには、より良い方法があることに留意してくださいブール値を使用するよりもループですか? – Jaeger

+1

「Play Gamesの初期化ガイド」(https://developers.google.com/games/services/android/init)で、より堅牢なコードを使用したい場合は、2つのブール値「mAutoStartSignInflow」と'onConnectionFailed'を処理するためのガードとして' mSignInClicked'を使用します。 – ianhanniballake

関連する問題