2015-11-04 5 views
0

Я закодировал Android-игру на Java с помощью Android Studio. Теперь я хочу обменять рекорды игроков онлайн через GoogleApi. Поэтому я инициализировать GoogleApiClient в моей onCreate функции:Android/Java: GoogleApiClient не подключается

googleApi = new GoogleApiClient.Builder(FullscreenActivity.this) 
       .addApi(Games.API) 
       .addOnConnectionFailedListener(this) 
       .addConnectionCallbacks(this) 
     .build(); 

Где googleApi является публичной GoogleApiClient переменной. Тогда есть:

@Override 
    protected void onStart() { 
     super.onStart(); 
     Log.e("Connected?", String.valueOf(googleApi.isConnected())); 
     googleApi.connect(); 
    } 

    @Override 
    public void onConnectionFailed(ConnectionResult result) { 
     Log.d("ConnectionFailed", String.valueOf(result)); 
     if (result.hasResolution()) { 
      try { 
       // !!! 
       result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR); 
      } catch (IntentSender.SendIntentException e) { 
       googleApi.connect(); 
      } 
     } 
    } 

    @Override 
    public void onConnected(Bundle bundle) { 
     if(!started){ 
      started = true; 
      setContentView(new Game(this)); 
     } 
    } 

    @Override 
    public void onConnectionSuspended(int i) { 
     if(!started){ 
      started = true; 
      this.setContentView(new Game(this)); 
     } 
    } 

Выход onConnectionFailed(...) говорит:. D/ConnectionFailed: ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{2b5bddee: [email protected]}, message=null}

На моем мобильном телефоне в стыковых играх Войти окно Google появился, и я вошел в Тогда вращающийся прогрессе круг показывал, и исчез. Функция onConnected(...) никогда не вызывалась. Что добавить/удалить/изменить?

Это, скорее всего, не дубликат, потому что я не нашел рабочего решения для нескольких других вопросов, которые равны по содержанию.

+1

Проверка для журналов Google Play Services https://developers.google.com/games/services/ андроид/регистрация – danieljohngomez

+0

Я буду смотреть на это, во-первых, спасибо. – Unknown

ответ

0

Во время процесса ввода может быть многократное обращение к onConnectionFailed. Вы посмотрели образцы в GitHub: https://github.com/playgameservices/android-basic-samples/tree/master/BasicSamples?

В образцах onConnectionFailed реализован как:

public void onConnectionFailed(ConnectionResult connectionResult) { 
     Log.d(TAG, "onConnectionFailed"); 
     if (mIsResolving) { 
      // The application is attempting to resolve this connection failure already. 
      Log.d(TAG, "onConnectionFailed: already resolving"); 
      return; 
     } 

     if (mSignInClicked || mAutoStartSignIn) { 
      mSignInClicked = false; 
      mAutoStartSignIn = false; 

      // Attempt to resolve the connection failure. 
      Log.d(TAG, "onConnectionFailed: begin resolution."); 
      mIsResolving = resolveConnectionFailure(this, mGoogleApiClient, 
        connectionResult, RC_SIGN_IN, getString(R.string.signin_other_error)); 
     } 

     updateUI(); 
    } 

И resolveConnectionFailure является:

public static boolean resolveConnectionFailure(Activity activity, 
                GoogleApiClient client, ConnectionResult result, int requestCode, 
                String fallbackErrorMessage) { 

     if (result.hasResolution()) { 
      try { 
       result.startResolutionForResult(activity, requestCode); 
       return true; 
      } catch (IntentSender.SendIntentException e) { 
       // The intent was canceled before it was sent. Return to the default 
       // state and attempt to connect to get an updated ConnectionResult. 
       client.connect(); 
       return false; 
      } 
     } else { 
      // not resolvable... so show an error message 
      int errorCode = result.getErrorCode(); 
      Dialog dialog = GooglePlayServicesUtil.getErrorDialog(errorCode, 
        activity, requestCode); 
      if (dialog != null) { 
       dialog.show(); 
      } else { 
       // no built-in dialog: show the fallback error message 
       showAlert(activity, fallbackErrorMessage); 
      } 
      return false; 
     } 
    } 
+0

Спасибо :) Это решение, которое я еще не видел, позволяет посмотреть, работает ли он :) – Unknown

Смежные вопросы