2013-06-06 3 views
10

Ho già testato l'esempio di ButtonClicker 2000 e funziona benissimo. Ora sto cercando di implementare Google Games servizi in un altro gioco, ma dà qualche errore:BaseGameUtils Errore sconosciuto, onConnectionFailed: risultato 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 registra il seguente errore:

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

Che cosa ho fatto:

  • Ho configurato correttamente il lato della console degli sviluppatori. SHA1 è corretto (corrisponde al keystore di Androiddebug).
  • Nella console API tutto sembra a posto.
  • Ho esteso GameBaseActivity e implementato le interfacce richieste.
  • Ho un file ids.xml nella cartella valori che corrisponde a quello nella Developer Console.
  • Ho superato i metodi richiesti, incluso suActivityResult()
  • Il manifest è anche OK, include i metadati richiesti.

  • Questo è il codice che uso per firmare nella onCreate:

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

Durante il test l'esempio Button Clicker 2000 ho avuto l'Errore sconosciuto troppo e riparato corretta configurazione del cruscotto. Anche l'attuale dashboard del gioco è configurata correttamente, quindi non so davvero cosa sta succedendo. Cosa mi manca?

EDIT:

  • Ho provato anche scartare BaseGameActivity e l'attuazione di GameHelper direttamente nella mia attività principale.
  • Ho provato a pubblicare le impostazioni dei giochi app (perché questo gioco è già stato pubblicato su Play Store). Collegato un'altra app con la mia chiave SHA1 di firma di pubblicazione. Settato come app principale per l'installazione. Ancora senza fortuna.

risposta

0

L'errore è molto chiaro:

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

Ciò significa che SignInActivity viene avviato con startActivity anziché startActivityForResult.

Cerca dove avviare questa attività e passa a startActivityForResult. Se hai postato del codice, sarei in grado di aiutarti di più!

+0

ho solo un'attività che non è SignInActivity. In realtà SignInActivity non è visibile da nessuna parte anche nel progetto GameBaseUtils. –

1

Questo è davvero strano. L'errore che hai, a seconda dei tuoi log di BaseGameActivity, non dovrebbe accadere.

SignInActivity infatti non è visibile nel codice, dal momento che lo si avvia chiamando GameHelper.resolveConnectionResult che chiamerà mConnectionResult.startResolutionForResult(mActivity, RC_RESOLVE). Quello è mConnectionResult che ha l'intenzione che avvierà SignInActivity. E i registri di BaseGameActivity dicono che lo stai avviando correttamente, quindi, tranne se hai apportato alcune modifiche in BaseGameActivity e GameHelper, l'errore è strano.

Dove stai cercando per gli errori? Nel tuo filtro dei pacchetti? Le informazioni veramente utili vengono visualizzate in LogCat, ma non nel filtro dell'applicazione. Cerca tutti i messaggi senza filtro, in LogCat, e cerca i tag Volley e GameAgent. Potrebbe mostrarti degli errori.

Ancora una cosa: è la finestra di SignIn mostrando comunque? Quando viene visualizzato l'errore SignInActivity (timestamp)?

+0

GameHelper e BaseGameActivity sono intatti, ovviamente. Non sto filtrando i registri in base al nome del pacchetto (vengono visualizzati tutti i messaggi). Non viene mostrato alcun messaggio di Volley o GameAgent. Se questo può aiutare, sto cercando di implementarlo in un progetto esportato da Shiva3D (che è ancora un progetto di eclipse Android). –

+0

Prima viene visualizzata la finestra di dialogo di avanzamento "Accesso", quindi la finestra di dialogo "Errore sconosciuto". –

0

in base ai tuoi errori stai collegando il gamehelper due volte (forse nel tuo oncreate?) E restituisce lo stato di errore 4. Non fornisci il codice ma sono sicuro di sapere qual è il tuo problema. Forse stai confondendo l'accesso di Google con GamesClient.connect Attendi l'accesso dell'account Google prima di connettere il gamesclient. Ho fatto

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

È possibile creare l'oggetto GamesClient nel vostro onCreate, ma il Connect è in una posizione migliore in questo metodo che ti ho dato. Ho passato ore a questo problema, spero che ho potuto fare a

0

Problema:

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

risolti:

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

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

} 

Questa è solo una dimostrazione di massima, gestire il ConnectionResult come suggerisce google.

per ulteriori informazioni Click Here