2017-07-13 21 views
0

ユーザーがサインインボタンを押すと、アカウントピッカーが起動します。アカウントピッカー以外の画面上の他の場所を押すと、報告書はログアウトされ、W/AutoManageHelper: Unresolved error while connecting client. Stopping auto-manage.とonConnectionFailedが呼び出されます。Google Playゲームのアカウントピッカーを正しく解除するにはどうすればよいですか?

アカウントピッカーとlogcatレポートを起動していない今、サインインボタンをもう一度押す:D/AutoManageHelper: starting AutoManage for client 0 true [email protected]

の第三プレスサインインボタンをlogcat報告すると、アプリがクラッシュ:Already managing a GoogleApiClient with id 0

SigninButtonコード:

public void onSignInButtonClicked(View v) { 
     if (apiClient != null && apiClient.isConnected()) { 
      Toast.makeText(this, R.string.connectedtext, Toast.LENGTH_LONG).show(); 
     } else { 
      apiClient = new GoogleApiClient.Builder(this) 
        .addApi(Games.API) 
        .addScope(Games.SCOPE_GAMES) 
        .setViewForPopups(findViewById(android.R.id.content)) 
        .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() { 
         @Override 
         public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
          Log.e(TAG, "Could not connect to Play games services"); 
         } 
        }).build(); 
     } 
    } 

ユーザーがGoogle Playの達成やリーダーボード画面からログアウトだろうというとき、私は同様の問題がありました。ログアウト後にサインインボタンを押すと、logcatからAlready managing a GoogleApiClient with id 0が報告されてアプリがクラッシュします。

私はこのコードでこの問題を解決することができた:私は、現在のアカウントピッカー問題がonActivityResultから同様の方法でか、私は内部のソリューションが必要な場合は解決することができるかどうかわからないのです

public void onActivityResult(int requestCode, int responseCode, Intent intent) { 
     super.onActivityResult(requestCode, responseCode, intent); 
     //If the user signs out on the Leaderboard or Achievements screen disconnect/reenable sign in from button 
     if ((responseCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED) && ((requestCode == 0) || (requestCode == 1))) { 
      apiClient.stopAutoManage(this); 
      apiClient.disconnect(); 
      apiClient = null; 
     } 
    } 

onConnectionFailedや他の何かが完全に必要な場合は?

アプリはGoogle Playコンソールに登録されており、通常の状況で問題なく接続できます。任意の助けhttps://github.com/MDodd423/TapAttack

感謝を:すべては、この問題を解決するために必要とされるが、プロジェクトはGitHubの上でホストされているもの

わかりません。

答えて

1

特定のGoogleサービスを呼び出す前に、まずGoogleデベロッパーコンソールにアプリを登録する必要があります。あなたがまだやっていないなら、set up a project and application in the API Console

さらに、Accessing Google APIsにチェックを入れて、automatically managed connectionの開始についても確認してください。あなたのGoogleApiClientインスタンスは、アクティビティがonStart()にコールされた後に自動的に接続され、onStop()を呼び出した後に切断されます。追加の洞察のために、この関連のSOの記事

チェック:

+0

アプリは、コンソールに登録され、通常罰金接続しています。私はonStartやonStopを持っていません.enableAutoManageはそれを処理します。あなたの返事のおかげで、この問題に関するもう少しの情報を追加しました。 – MDodd423

関連する問題