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();
}
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")
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 :)
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());
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;
}