2013-06-06 9 views
10

Testowałem już przykład ButtonClicker 2000 i działa świetnie. Teraz próbuję wdrożyć Google Games usługi w innej grze, ale daje pewien błąd:BaseGameUtils Nieznany błąd, onConnectionFailed: wynik 4

06-06 12:30:46.353: D/BaseGameActivity(7982): isGooglePlayServicesAvailable returned 0 
06-06 12:30:46.353: D/BaseGameActivity(7982): beginUserInitiatedSignIn: starting new sign-in flow. 
06-06 12:30:46.416: D/BaseGameActivity(7982): Connecting GamesClient. 
06-06 12:30:46.424: D/BaseGameActivity(7982): onStart. 
06-06 12:30:46.424: D/BaseGameActivity(7982): onStart: connecting clients. 
06-06 12:30:46.424: D/BaseGameActivity(7982): Connecting GamesClient. 
06-06 12:30:46.424: E/GmsClient(7982): Calling connect() while still connected, missing disconnect(). 
06-06 12:30:46.713: D/BaseGameActivity(7982): onConnectionFailed: result 4 
06-06 12:30:46.713: D/BaseGameActivity(7982): onConnectionFailed: since user initiated sign-in, trying to resolve problem. 
06-06 12:30:46.713: D/BaseGameActivity(7982): resolveConnectionResult: trying to resolve result: ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{41692200: [email protected]}} 
06-06 12:30:46.713: D/BaseGameActivity(7982): result has resolution. Starting it. 

06-06 12:30:46.900: D/BaseGameActivity(7982): onActivityResult, req 9001 response 0 
06-06 12:30:46.900: D/BaseGameActivity(7982): responseCode != RESULT_OK, so not reconnecting. 
06-06 12:30:46.900: D/BaseGameActivity(7982): giveUp: giving up on connection. Status code: 4 
06-06 12:30:46.900: D/BaseGameActivity(7982): Making error dialog for error: 4 

com.google.android.gms loguje się następujący błąd:

E/SignInActivity(7432): SignInActivity must be started with startActivityForResult 

co mam zrobić:

  • Skonfigurowałem poprawnie stronę konsoli programisty. SHA1 jest poprawny (pasuje do magazynu kluczy Androiddebug).
  • W konsoli API wszystko wygląda dobrze.
  • Rozszerzyłem GameBaseActivity i zaimplementowałem wymagane interfejsy.
  • Mam folder ids.xml w wartościach zgodny z tym w Konsoli programisty.
  • Mam zastąpione żądane metody, włączone naActivityResult()
  • Manifest jest również OK, zawiera żądane metadane.

  • Jest to kod używam do logowania w onCreate:

    setSignInMessages("SIGNING IN", "SIGNING OUT"); 
    beginUserInitiatedSignIn(); 
    

Testując Clicker przykład Przycisk 2000 miałem zbyt Nieznany błąd i naprawić go poprawnie konfigurując deski rozdzielczej. Obecny pulpit nawigacyjny jest również poprawnie skonfigurowany, więc nie wiem, co się dzieje. Czego mi brakuje?

EDIT:

  • Próbowałem też rozpakowaniu BaseGameActivity i wdrażaniu GameHelper bezpośrednio w moim głównej działalności.
  • Próbowałem opublikować ustawienia gier aplikacji (ponieważ ta gra jest już opublikowana w Sklepie Play). Połączono inną aplikację z moim kluczem SHA1 do publikowania. Ustawiona jako główna aplikacja do instalacji. Wciąż nie ma szczęścia.

Odpowiedz

0

Błąd jest bardzo jasne:

E/SignInActivity(): SignInActivity must be started with startActivityForResult 

Oznacza to, że SignInActivity jest uruchamiany z startActivity zamiast startActivityForResult.

Wyszukaj, gdzie jest wykonywane to działanie, i zmień na startActivityForResult. Jeśli napisałeś jakiś kod, będę w stanie Ci pomóc!

+0

Mam tylko działalność, która nie jest SignInActivity. W rzeczywistości SignInActivity nie jest widoczny nigdzie nawet w projekcie GameBaseUtils. –

1

To naprawdę dziwne. Błąd, jaki masz, w zależności od logów BaseGameActivity, nie powinien się zdarzyć.

SignInActivity w rzeczywistości nie jest widoczny w kodzie, ponieważ uruchamiasz go, dzwoniąc pod numer GameHelper.resolveConnectionResult, który wywoła mConnectionResult.startResolutionForResult(mActivity, RC_RESOLVE). To jest mConnectionResult, która ma intencję, która uruchomi SignInActivity. A dzienniki BaseGameActivity mówią, że uruchamiasz to poprawnie, więc chyba że wprowadziłeś pewne zmiany w BaseGameActivity i GameHelper, błąd jest dziwny.

Gdzie szukasz błędów? W twoim filtrze pakietu? Naprawdę przydatne informacje są wyświetlane w LogCat, ale nie znajdują się w filtrze aplikacji. Poszukaj wszystkich wiadomości bez filtra, w LogCat i szukaj tagów Volley i GameAgent. Może pokazać ci pewne błędy.

Jeszcze jedno: czy mimo to wyświetlane jest okno dialogowe Logowanie? Kiedy wyświetla się błąd SignInActivity (znacznik czasu)?

+0

GameHelper i BaseGameActivity są oczywiście nietknięte. Nie filtruję logów według nazw paczek (pokazane są wszystkie wiadomości). W każdym razie nie wyświetla się komunikat "Volley" ani "GameAgent". Jeśli to mogłoby pomóc, próbuję go zaimplementować w wyeksportowanym projekcie Shiva3D (który jest nadal projektem zaćmienia Androida). –

+0

Najpierw wyświetlane jest okno dialogowe "logowanie", a następnie okno dialogowe "Nieznany błąd". –

0

zgodnie z Twoimi błędami dwa razy łączysz gamehelpera (być może w swoim oncreate?) I zwraca błąd 4 stanu. Nie podajesz kodu, ale jestem pewien, że wiem, jaki masz problem. Możesz zepsuć logowanie go przez Google AppsClient.connect Poczekaj na zalogowanie się na konto Google przed połączeniem z GameClient. Zrobiłem

public void onSignInSucceeded() {  
      mGamesClient.connect();} 

Można utworzyć obiekt GamesClient w swoim onCreate, ale Connect jest lepiej umiejscowiony w tej metodzie ci dałem. Spędziłem godziny z tego problemu, mam nadzieję, że mogłem pomóc

0

Problem:

ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{#: [email protected]#}}

rozwiązany przez:

@Override 
public void onConnectionFailed(ConnectionResult arg0) { 
    <Your Code...> 

    try { 
     arg0.startResolutionForResult(this, 9001); 
    } catch (SendIntentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

Jest to tylko demonstracja szorstki, obsługiwać ConnectionResult jak sugerują google.

więcej informacji Click Here

Powiązane problemy