1

J'ai eu ce problème pendant un certain temps, et il augmente avec l'augmentation des téléchargements.

Il apparaît dans showActivityResultError() qui affiche une boîte de dialogue d'erreur pour les problèmes de connexion aux services de jeux Google Play. J'ai testé le cas par défaut ("Pas de code de réponse d'activité significatif, donc générez la boîte de dialogue par défaut des services Google Play") et cela fonctionne bien sur mon téléphone.

Une chose - à la fois GooglePlayServicesUtil.isGooglePlayServicesAvailable et GooglePlayServicesUtil.getErrorDialog montrent à amortir, mais je ne peux pas trouver toutes les mises à jour - que tout le monde utilise BaseGameUtils pour leurs Leaderboards/Réalisations de toute façon?

Se produit sur les versions Android 4.2/4.4/5.0/5.1/6.0 donc pas de vrais indices.

appareils Top: Galaxy note4 (tre3g)/Galaxy Grande Neo Plus (grandneove3g)/Galaxy Note 3 (hA3G)/Galaxy J7 (2016) (j7xelte)/Galaxy TAB4 7.0 (degaswifiue)/Galaxy Note4 (trlte)/Galaxy grand-Prime (grandprimeve3g)/Galaxy S6 bord (zerolte)

Le code source pour BaseGameUtils peut être consulté ici: https://github.com/playgameservices/android-basic-samples/blob/master/BasicSamples/libraries/BaseGameUtils/src/main/java/com/google/example/games/basegameutils/BaseGameUtils.java

Cheers!

java.lang.RuntimeException: 
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4019) 
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4062) 
    at android.app.ActivityThread.access$1400(ActivityThread.java:177) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1483) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5930) 
    at java.lang.reflect.Method.invoke(Method.java:0) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 
Caused by: android.view.WindowManager$BadTokenException: 
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:574) 
    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:282) 
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85) 
    at android.app.Dialog.show(Dialog.java:298) 
    at com.google.example.games.basegameutils.BaseGameUtils.showActivityResultError(BaseGameUtils.java:154) 
    at <my game here> 
+0

Basé sur ce SO [post] ralenti (https://stackoverflow.com/a/31016761/5995040), vous pouvez utiliser 'GoogleApiAvailability' pour' isGooglePlayServicesAvailable' et 'getErrorDialog'. AFAIK, vous devriez utiliser [package de jeux] (https://developers.google.com/android/reference/com/google/android/gms/games/package-summary) pour les réalisations et le classement. J'espère que cela t'aides. –

+1

Merci, je vais essayer de faire ces changements et voir comment ça se passe. L'accident est relativement rare WRT le nombre de sessions quotidiennes, mais persistantes. – CamS

Répondre

0

J'ai finalement trouvé la réponse, et c'est une solution très simple. Il s'agit en fait d'appeler Dialog.show() pendant que l'activité est en cours de finalisation. Il est bien décrit ici: http://dimitar.me/android-displaying-dialogs-from-background-threads/

Le correctif met simplement if(!activity.isFinishing()) avant d'appeler Dialog.show();

Dans mon cas, il est avant errorDialog.show(); dans la méthode showActivityResultError() dans BaseGameUtils.java

Thant est tout. Quelques exceptions par semaine ont disparu.