web-dev-qa-db-fra.com

Désinscription de GCM provoquant le blocage de l'application

J'ai implémenté les notifications GCM sur mon application. J'essaie maintenant de désinscrire l'application lorsque l'utilisateur se déconnecte. J'utilise le code suivant. Lorsque ce code est exécuté, l'application se bloque avec le logcat suivant:

Java.lang.IllegalAccessError: Method 'void Android.support.v4.content.ContextCompat.<init>()' is inaccessible to class 'com.google.Android.gms.iid.zzd' (declaration of 'com.google.Android.gms.iid.zzd' appears in /data/app/com.example.packagename-1/base.apk)
    at com.google.Android.gms.iid.zzd.zzeb(Unknown Source)
    at com.google.Android.gms.iid.zzd.<init>(Unknown Source)
    at com.google.Android.gms.iid.zzd.<init>(Unknown Source)
    at com.google.Android.gms.iid.InstanceID.zza(Unknown Source)
    at com.google.Android.gms.iid.InstanceID.getInstance(Unknown Source)
    at com.zaryans.updatedepoultry.WelcomeActivity$11.onItemClick(WelcomeActivity.Java:469)
    at Android.widget.AdapterView.performItemClick(AdapterView.Java:310)
    at Android.widget.AbsListView.performItemClick(AbsListView.Java:1145)
    at Android.widget.AbsListView$PerformClick.run(AbsListView.Java:3066)
    at Android.widget.AbsListView$3.run(AbsListView.Java:3903)
    at Android.os.Handler.handleCallback(Handler.Java:739)
    at Android.os.Handler.dispatchMessage(Handler.Java:95)
    at Android.os.Looper.loop(Looper.Java:148)
    at Android.app.ActivityThread.main(ActivityThread.Java:5417)
    at Java.lang.reflect.Method.invoke(Native Method)
    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:726)
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:616)

Voici le code:

InstanceID instanceID = InstanceID.getInstance(WelcomeActivity.this);
try {
   instanceID.deleteInstanceID();
   Utility.logCatMsg("Logged Out Success!!!");
} catch (IOException e) {
   Utility.logCatMsg("Exception while logging out: "+e.getMessage());
   e.printStackTrace();
}
24
Farhan Ali

J'étais avec le même problème après la mise à jour de la bibliothèque de support à 25.0.0 . Pour moi après la mise à jour des bibliothèques ci-dessous, dans le fichier de dégradé d'application, le problème a disparu.

compile("com.google.Android.gms:play-services-location:9.6.1")
compile("com.google.Android.gms:play-services-maps:9.6.1")
compile("com.google.Android.gms:play-services-gcm:9.6.1")
43
luizMello

Mettez à jour les services de Google Play vers la dernière version (9.8.0) après avoir mis à jour la bibliothèque de support Android à 25.0.0 J'ai eu le même problème ce matin et cela a fonctionné pour moi :)

4
AndroidGeek

Pas sûr que cela résoudra votre problème, mais il est toujours judicieux de transférer l'application Context à des frameworks tiers, plutôt que des instances Activity, car ces derniers peuvent entraîner des fuites de mémoire. Essayez ceci à la place:

InstanceID instanceID = InstanceID.getInstance(getApplicationContext());
2
Egor

utiliser les dépendances de la manière donnée

compile ("com.google.Android.gms:play-services-base:10.0.1") {
        force = true;
    }
    compile ("com.google.Android.gms:play-services-maps:10.0.1") {
        force = true;
    }
    compile ("com.google.Android.gms:play-services-gcm:10.0.1") {
        force = true;
    }
    compile ('com.google.firebase:firebase-core:10.0.1') {
        force = true;
    }
    compile ('com.google.firebase:firebase-messaging:10.0.1') {
        force = true;
    }
0
Shubham Goel