77

Seit ich auf Android SDK Tools 25.1.6 und Android Support Repository 32.0.0 (heute Morgen) aktualisiert habe, habe ich den folgenden Fehler, ich habe nichts geändert in meinem Code und es funktioniert immer noch auf meinem Kollegen Computer (Android SDK Tools 25.1.1 + Android Support Repository 30.0.0).IncompatibleClassChangeError nach der Aktualisierung auf Android Build Tools 25.1.6 GCM/FCM

java.lang.IncompatibleClassChangeError: The method 
    'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)' 
    was expected to be of type virtual but instead was found to be of type direct 
    (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar) 

    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.xxxxxxx.utils.RegistrationIntentService.onHandleIntent(RegistrationIntentService.java:55) 
    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:145) 
    at android.os.HandlerThread.run(HandlerThread.java:61) 

Hier ist ein das Stück Code, der Absturz:

InstanceID instanceID = InstanceID.getInstance(this); // <-- crash here 
String instanceIDToken = instanceID.getToken(getString(R.string.google_app_id), 
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 

Es ist, wenn ich versuche, ein Token von Google Cloud Messaging zu erhalten.

ich den Import GCM in Gradle mit splited Play-Dienste:

compile 'com.google.android.gms:play-services-analytics:9.0.0' 
compile 'com.google.android.gms:play-services-maps:9.0.0' 
compile 'com.google.android.gms:play-services-location:9.0.0' 
compile 'com.google.android.gms:play-services-gcm:9.0.0' 
compile 'com.google.android.gms:play-services-base:9.0.0' 

EDIT deaktivieren GCM das Problem behoben, so meine Vermutung ist, ich

zu Firebase Cloud-Nachricht migrieren sollten EDIT2 Mein Gerät erhält Google Play Services 9.0 (gestern war 8.4.x). Jetzt hat abstürzen es nicht mehr, aber beschweren sich über Modulbeschreibers

Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor" 
Firebase API initialization failure. 

Hat jemand einen ähnlichen Fehler hat, und wie man es beheben?

FIXED Besonderer Dank an @ Stepanet. ./gradlew -q app:dependencies --configuration compile hilft Ihnen, zu identifizieren, welche Abhängigkeiten enthalten SDK 24.x

Hauptproblem ist, einige Bibliothek importieren Sie die neuesten Support-Bibliothek + Zeichen anstelle einer Version. Dies verursacht das Problem, indem die neueste verfügbare Version einbezogen wird.

vermeiden So + Zeichen in Abhängigkeiten;)

+0

Offenbar Google Cloud Messaging werden Firebase Cloud Messaging: https://firebase.google.com/docs/cloud-messaging/ nicht sicher, ob es sich bezieht, noch untersucht. – sonique

+0

Ich glaube, das ist kein Build-Tool-Problem. Es hat mit Google Play Service zu tun. Ich habe die Version 9.0.0 verwendet und erhalte immer noch den Fehler und beschwere mich darüber, dass meine Signatur ungültig ist ... –

+0

Wie überprüfen Sie die Version der Google Play-Dienste auf Ihrem Handy? Ich sehe Google Play Musik, Spiele usw. aber nichts wie Play-Dienste. – bschandramohan

Antwort

36

Ich habe die Gradle Abhängigkeit Baum verwendet, um diesen Fehler für mich zu lösen.

Führen Sie einfach gradle -q app:dependencies --configuration compile und überprüfen Sie die Ausgabe für Einträge wie folgt aus:

+--- com.mcxiaoke.viewpagerindicator:library:2.4.1 
| \--- com.android.support:support-v4:+ -> 24.0.0-beta1 (*) 

Wie Diego Giorgini sagte diese Version zu hoch ist (> = 24). aktualisieren So die Abhängigkeiten in build.gradle wie

compile('com.mcxiaoke.viewpagerindicator:library:2.4.1') { 
    exclude module: 'support-v4'; 
} 
compile 'com.android.support:support-v4:23.4.0' 
+0

Das Hauptproblem war einige Module importieren Unterstützung Bibliothek mit einem '+' Zeichen (wie in Ihrem Beispiel). So groß ist die neueste Version, die nicht in den Fall passt. Vielen Dank! – sonique

+1

Ich verstehe nicht, wie Android> = 24 Abhängigkeiten in unser Projekt rutschen kann, wenn wir alles wie unten beschrieben angeben. 24. Dies scheint ein neues Problem zu sein, das jetzt Debug-Versionen meiner App gemauert hat und zu einiger Verwirrung geführt hat - während die Ladenversion mit dem gleichen Code in Ordnung scheint –

+0

Danke stegranet für die Bestätigung. Wir veröffentlichen gerade ein Update, um dies zu beheben. Bitte versuchen Sie Version 9.0.1 –

4

Update auf die neueste Version der Google Play-Dienste Version das Problem für mich festgelegt.

anwenden Plugin: 'com.google.gms.google-services' am Boden ...

dependencies { 
    compile 'com.google.android.gms:play-services:9.0.0' 
} 

https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project

+0

danke.Ich habe auch auf '9.0.0' aktualisiert, habe aber immer noch das Problem. Ich verwende derzeit geteilte 'gms'. : 'kompilieren 'com.google.android.gms: play-services-analytics: 9.0.0' kompilieren 'com.google.android.gms: play-services-maps: 9.0.0' kompilieren 'com.google .android.gms: play-services-location: 9.0.0 ' kompilieren' com.google.android.gms: play-services-gcm: 9.0.0 ' kompilieren' com.google.android.gms: play-services -base: 9.0.0'' – sonique

+0

Ich habe versucht, mit 'play-services: 9.0.0' zu kompilieren, aber immer noch das gleiche Problem. – sonique

+0

Ich benutze 'com.google.android.gms: play-services-gcm: 9.0.2', habe aber das gleiche Problem –

5

Ich habe die Play-Dienste Abhängigkeiten aktualisiert in build.gradle

dependencies { 
    compile 'com.google.android.gms:play-services:9.0.0' 
} 

Um den Versionskonflikt entweder durch Aktualisieren der Version des Google-Services-Plugins zu beheben - ich musste Aktualisieren Sie die Google-Dienste im build.gradle unter dem Stammordner

dependencies { 
    classpath 'com.google.gms:google-services:3.0.0' 
} 

Sie das Projekt Das neueste Update der Google-Dienste here bekommen.

Obwohl es nicht die Ausnahme vermeidet, aber seine Anwendung nicht mehr in meiner Seite stürzt.

aktualisieren

ich durch die Aktualisierung der Android-Studio von Beta-Channel den Absturz vermeiden konnte. Dann aktualisieren Sie Ihre platform/build-tools in SDK.

enter image description here

+0

Danke, ich habe google-services auf 3.0 aktualisiert.0, aber es hilft nicht :( – sonique

+0

In meinem Fall bekomme ich die Ausnahme in logcat, aber es stürzt nicht mehr –

+0

ok, vielen Dank für Ihr Feedback. Verwenden Sie Android Build Tools 25.1.6? – sonique

1

Durch die Einbeziehung aller Pakete Play-Dienste

dependencies { 
    compile 'com.google.android.gms:play-services:9.0.0' 
} 

Sie den Fehler unterdrücken, aber das Endergebnis ist, dass die GCM Token-Abruf funktioniert nicht noch können wir eine Instanz erhalten das GCM. Das ist also keine Lösung in meinen Büchern. Wenn jemand eine Idee hat, was vor sich geht, bitte erleuchten uns.

EDIT:

I GCM ersetzt mit Feuerbasis, 2,1-2,2 Android Studio aktualisiert, um die sofortige laufen Problem mit Feuerbasis Analytik, aktualisiert Build-Tools bis 24-rc4 und Plattform-Tools bis 24-rc3 zu fixieren und gehalten Die Version meiner Support-Bibliotheken ist 23.4.0. Alles scheint jetzt gut zu funktionieren.

+0

es klingt wie wir müssen FCM implementieren – sonique

+0

Ich habe es getan, und ich bekomme immer noch den gleichen Fehler. Ich habe GCM vollständig entfernt und ersetzt durch FCM basierend auf diesem: https://developers.google.com/cloud-messaging/android/android-migrate- fcm # switch_t o_fcm_in_the_app-level_buildgradle Etwas stimmt nicht mit der Support-Bibliothek, nicht mit den GCM- oder FCM-Paketen –

5

arbeitete Mine mit den folgenden:

App-Ebene gradle

dependencies { 
compile 'com.android.support:appcompat-v7:23.4.0' 
compile 'com.android.support:design:23.4.0' 
compile 'com.google.android.gms:play-services:9.0.0' 
} 

Root-Ebene gradle

dependencies { 
    classpath 'com.google.gms:google-services:3.0.0' 
} 
+2

Das funktionierte für mich ... Ich habe alle Versionen 24.2.1 auf 23.4.0 geändert und getToken funktioniert wieder ... Das ist schrecklich! Jetzt habe ich Angst, die Versionen zu aktualisieren. – EZDsIt

34

Aktualisierung kann 27:

wir nur ein Update veröffentlicht (version 9.0.1), um die Inkompatibilität zu beheben, die ich bei meiner ersten Bearbeitung erwähnt habe.
Bitte aktualisieren Sie Ihre Abhängigkeiten und lassen Sie uns wissen, ob dies noch ein Problem ist.

Danke!


ursprüngliche Antwort 20. Mai:

Das Problem, das Sie erleben ist aufgrund einer Inkompatibilität zwischen
play-services/firebase sdk v9.0.0 und com.android.support:appcompat-v7 >= 24
(die Version mit Android-N sdk freigegeben)

Sie sollten es beheben können, indem Sie auf eine frühere Version der Support-Bibliothek abzielen. Wie:

compile 'com.android.support:appcompat-v7:23.4.0' 
+2

Dies ist die einzige Lösung, die anscheinend funktioniert hat, danke. Es ist ein wenig gruselig, dass Bugs wie diese in Produktionen rutschen können, wenn es dir nichts ausmacht, dass ich das sage! –

+0

Ich habe es getan, aktualisiert: - Kompilieren 'com.google.android.gms: play-services-gcm: 9.0.2' auch com.google.gms: google-services: 3.0.0 'aber es ergibt sich multidex Fehler. Irgendeine Idee!! – Rohit

+0

'com.google.android.gms: play-services-gcm: 9.0.2' hat immer noch dieses Problem –

0

Nach einem ganzen Tag auf diesem, ich 100% bestätigen kann, dass die Optimizely Bibliothek auch in gewisser Weise ist clashing und verursacht diesen Fehler. Um genau zu sein, verwende ich Optimizely über Fabric. Es ist nicht möglich, Firebase zu initialisieren, während Optimizely auf diese Weise verwendet wird (vielleicht auf alle Arten?).

Ich habe auf ihre Github darüber geschrieben und wird sie direkt in Verbindung ...

https://github.com/optimizely/Optimizely-Android-SDK/issues/11

0

ich hatte das gleiche Problem. Ich aktualisierte SDK-Tools zu 25.1.7 rc1, dann war das Problem weg.

1

Ich hatte das gleiche Problem und von Android Support Repository 32.0.0 auf Android Support Repository 31.0.0 löste es gelöst.

+3

Wie können Sie Android Repository wiederherstellen? –

+2

Nun, der einzige Weg, den ich gefunden habe, ist das alte Repository anstelle des neuen zu kopieren. Das Repository befindet sich normalerweise unter dem Android-Ordner, auf den Ihr 'SDK-Manager' zeigt (wenn Sie einen Mac verwenden, ist dies wahrscheinlich der Pfad ~/Library/Android/sdk/extras). Im Extras-Ordner ersetzen Sie die Ordner "Android" und "Google" durch die alten Ordner. – BorisK

+0

Ich habe das Repo hier gefunden: https://dl-ssl.google.com/android/repository/android_m2repository_r31.zip, dann entpacke ich das zu ../sdk/extras/android und entferne die vorhandene m2reposity ** schien ** arbeite so weit. –

0

aktualisierte SDK-Tools zu 25.1.7 und behob dieses Problem.

0

Nun, ich bin nur Anfänger mit Android. Ich wollte die Erstellung von Benutzern in Firebase nach folgenden Anweisungen testen, die auf der Firebase-Website zur Verfügung gestellt wird.

Ich habe diese Zeilen an den angegebenen Stellen hinzugefügt.

classpath 'com.google.gms:google-services:3.0.0'

compile 'com.google.firebase:firebase-auth:9.2.0'

apply plugin: 'com.google.gms.google-services'

Aber createUserWithEmailAndPassword Methode gehalten Scheitern Benutzer bei der Erstellung zeigt. Deshalb habe ich diese Frage besucht, um mein Problem herauszufinden. Ich habe alles gelesen und jeden Rat angewendet. Aber die IT zeigte weiterhin Fehler. Aber wenn ich Android Studio from 2.1.1 to 2.1.2 aktualisiere, könnte ich Benutzer erfolgreich erstellen.

Aber als ich überprüfte logcat, zeigte es zuerst "Firebase API initialization failure" und zeigte dann "FirebaseApp Initialisierung erfolgreich".

07-09 18:53:37.012 13352-13352/jayground.firebasetest A/FirebaseApp: Firebase API initialization failure. How can I solve 

this? java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.google.firebase.FirebaseApp.zza(Unknown Source) at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) at com.google.firebase.FirebaseApp.zzeh(Unknown Source) at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source) at android.content.ContentProvider.attachInfo(ContentProvider.java:1591) at android.content.ContentProvider.attachInfo(ContentProvider.java:1562) at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) at android.app.ActivityThread.installProvider(ActivityThread.java:5118) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4713) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4596) at android.app.ActivityThread.access$1600(ActivityThread.java:169) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:146) at android.app.ActivityThread.main(ActivityThread.java:5487) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NoSuchMethodError: com.google.android.gms.common.internal.zzaa.zzz at com.google.android.gms.measurement.internal.zzx.zzbd(Unknown Source) at com.google.android.gms.measurement.AppMeasurement.getInstance(Unknown Source) at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.google.firebase.FirebaseApp.zza(Unknown Source)  at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)  at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)  at com.google.firebase.FirebaseApp.zzeh(Unknown Source)  at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)  at android.content.ContentProvider.attachInfo(ContentProvider.java:1591)  at android.content.ContentProvider.attachInfo(ContentProvider.java:1562)  at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)  at android.app.ActivityThread.installProvider(ActivityThread.java:5118)  at android.app.ActivityThread.installContentProviders(ActivityThread.java:4713)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4596)  at android.app.ActivityThread.access$1600(ActivityThread.java:169)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:146)  at android.app.ActivityThread.main(ActivityThread.java:5487)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)  at dalvik.system.NativeStart.main(Native Method)  07-09 18:53:37.022 13352-13352/jayground.firebasetest I/FirebaseInitProvider: FirebaseApp initialization successful

+0

Ok. Vielen Dank. Ich dachte, es wäre gut zu erzählen, wie ich mein Problem gelöst habe. (Ich war mir nicht sicher, ob ich es vollständig gelöst hatte. Ich konnte Benutzer mit com.google.firebase: fireBase-auth: 9.2.0 erstellen, nachdem ich die Android Studio-Version aktualisiert hatte, aber die Initialisierung der Firebase-API in logcat fehlschlug) Ich werde nächstes Mal den 'ASK Question Button' benutzen. – Jayground

1

Für Android Push-Benachrichtigung mit GCM 2016:

1) im Android SDK-> SDK-Tools überprüfen Google Play-Dienste

2) in gradle in Abhängigkeiten fügen Sie einfach eine Zeile:

compile 'com.google.android.gms:play-services-gcm:9.4.0' 

(es gibt keine spezifischen classpath und es funktioniert für mich)

3) Sie müssen c reate 3-Klasse (GCMPushReceiverService, GCMRegistrationIntentService, GCMTokenRefreshListenerService)

4,1) Code für GCMTokenRefreshListenerService:

package com.myapp.android; 

/** 
* Created by skygirl on 02/08/2016. 
*/ 
import android.content.Intent; 
import com.google.android.gms.iid.InstanceIDListenerService; 

public class GCMTokenRefreshListenerService extends InstanceIDListenerService { 

    //If the token is changed registering the device again 
    @Override 
    public void onTokenRefresh() { 
     Intent intent = new Intent(this, GCMRegistrationIntentService.class); 
     startService(intent); 
    } 
} 

4,2)-Code für GCMRegistrationIntentService (ändern authorizedEntity mit Ihrem Projekt-Nummer):

package com.myapp.android; 

/** 
* Created by Skygirl on 02/08/2016. 
*/ 
import android.app.IntentService; 
import android.content.Intent; 
import android.support.v4.content.LocalBroadcastManager; 
import android.util.Log; 

import com.google.android.gms.gcm.GoogleCloudMessaging; 
import com.google.android.gms.iid.InstanceID; 

public class GCMRegistrationIntentService extends IntentService { 
    //Constants for success and errors 
    public static final String REGISTRATION_SUCCESS = "RegistrationSuccess"; 
    public static final String REGISTRATION_ERROR = "RegistrationError"; 

    //Class constructor 
    public GCMRegistrationIntentService() { 
     super(""); 
    } 


    @Override 
    protected void onHandleIntent(Intent intent) { 
     //Registering gcm to the device 
     registerGCM(); 
    } 

    private void registerGCM() { 
     //Registration complete intent initially null 
     Intent registrationComplete = null; 

     //Register token is also null 
     //we will get the token on successfull registration 
     String token = null; 
     try { 
      //Creating an instanceid 
      InstanceID instanceID = InstanceID.getInstance(this); 
      String authorizedEntity = "XXXXXXXXXX"; // your project number 

      //Getting the token from the instance id 
      token = instanceID.getToken(authorizedEntity, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 

      //Displaying the token in the log so that we can copy it to send push notification 
      //You can also extend the app by storing the token in to your server 
      Log.w("GCMRegIntentService", "token:" + token); 

      //on registration complete creating intent with success 
      registrationComplete = new Intent(REGISTRATION_SUCCESS); 

      //Putting the token to the intent 
      registrationComplete.putExtra("token", token); 
     } catch (Exception e) { 
      //If any error occurred 
      Log.w("GCMRegIntentService", "Registration error"); 
      registrationComplete = new Intent(REGISTRATION_ERROR); 
     } 

     //Sending the broadcast that registration is completed 
     LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete); 
    } 
} 

4.3)-Code für GCMPushReceiverService:

package com.myapp.android; 

/** 
* Created by Skygirl on 02/08/2016. 
*/ 
import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.media.RingtoneManager; 
import android.os.Bundle; 
import android.support.v4.app.NotificationCompat; 

import com.google.android.gms.gcm.GcmListenerService; 

//Class is extending GcmListenerService 
public class GCMPushReceiverService extends GcmListenerService { 

    //This method will be called on every new message received 
    @Override 
    public void onMessageReceived(String from, Bundle data) { 
     //Getting the message from the bundle 
     String message = data.getString("message"); 
     //Displaying a notiffication with the message 
     sendNotification(message); 
    } 

    //This method is generating a notification and displaying the notification 
    private void sendNotification(String message) { 
     Intent intent = new Intent(this, MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     int requestCode = 0; 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT); 
     NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.your_logo) 
       .setContentTitle("Your Amazing Title") 
       .setContentText(message) 
       .setPriority(Notification.PRIORITY_MAX) 
       .setContentIntent(pendingIntent); 
     noBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)); 

     NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
     notificationManager.notify(0, noBuilder.build()); //0 = ID of notification 
    } 
} 

5) Vergessen Sie nicht, Paketnamen

6) In Ihrem mainActivity fügen Sie diesen Code zu ändern:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Setup view 
     setContentView(R.layout.main); 
    mRegistrationBroadcastReceiver = new BroadcastReceiver() { 

     //When the broadcast received 
     //We are sending the broadcast from GCMRegistrationIntentService 

     public void onReceive(Context context, Intent intent) { 
      //If the broadcast has received with success 
      //that means device is registered successfully 
      if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_SUCCESS)){ 
       //Getting the registration token from the intent 
       String token = intent.getStringExtra("token"); 
       //Displaying the token as toast 
       Toast.makeText(getApplicationContext(), "Registration token:" + token, Toast.LENGTH_LONG).show(); 

       //if the intent is not with success then displaying error messages 
      } else if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_ERROR)){ 
       Toast.makeText(getApplicationContext(), "GCM registration error!", Toast.LENGTH_LONG).show(); 
      } else { 
       Toast.makeText(getApplicationContext(), "Error occurred", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }; 

    //Checking play service is available or not 
    int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); 

    //if play service is not available 
    if(ConnectionResult.SUCCESS != resultCode) { 
     //If play service is supported but not installed 
     if(GooglePlayServicesUtil.isUserRecoverableError(resultCode)) { 
      //Displaying message that play service is not installed 
      Toast.makeText(getApplicationContext(), "Google Play Service is not install/enabled in this device!", Toast.LENGTH_LONG).show(); 
      GooglePlayServicesUtil.showErrorNotification(resultCode, getApplicationContext()); 

      //If play service is not supported 
      //Displaying an error message 
     } else { 
      Toast.makeText(getApplicationContext(), "This device does not support for Google Play Service!", Toast.LENGTH_LONG).show(); 
     } 

     //If play service is available 
    } else { 
     //Starting intent to register device 
     Intent itent = new Intent(this, GCMRegistrationIntentService.class); 
     startService(itent); 
    } 
} 

//Unregistering receiver on activity paused 
@Override 
public void onPause() { 
    super.onPause(); 
    Log.w("MainActivity", "onPause"); 
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver); 
} 



    @Override 
    public void onResume() { 
super.onResume(); 
     Log.w("MainActivity", "onResume"); 
     LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver, 
       new IntentFilter(GCMRegistrationIntentService.REGISTRATION_SUCCESS)); 
     LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver, 
       new IntentFilter(GCMRegistrationIntentService.REGISTRATION_ERROR)); 
    } 

7) In AndroidManifest.xml füge folgende Zeilen hinzu:

<uses-permission android:name="android.permission.INTERNET" /> 

8) in deine Konsole logcat kopiere dein Token und füge auf thi ein s site Fügen Sie Ihre Projektnummer, Ihr Token und eine Nachricht hinzu. Es funktioniert gut für mich :)

+0

Hallo @Skygirl Ich folge deinem Beispiel, irgendwelche besonderen Anforderungen in der AndroidManifest? Könnten Sie bitte diesen Teil des Codes hinzufügen?Danke – ziniestro

+0

@ziniestro nur eine Zeile in Ihrem Manifest überprüfe mein Update;) – skygirl

+0

danke @Skygirl – ziniestro

0

Ich habe dieses Problem konfrontiert, und ich ändere meine App Gradle-Version von 1.5.0 bis 2.0.0.

Änderung Classpath

com.android.tools.build:gradle:1.5.0

zu

classpath 'com.android.tools.build:gradle:2.0.0

0

Lösung 1:

dependencies { 
compile `com.android.support:appcompat-v7:23.4.0` 
compile `com.android.support:support-v4:23.4.0` 
compile `com.android.support:design:23.4.0` 
compile `com.google.android.gms:play-services:9.0.0` 
} 

Lösung 2: Erkennung unverträglich auf Ordner .idie/lib raries/ .some Mal, wenn Sie Play-Dienste-Anzeigen erklären: 8.4.0 gleichzeitig mit Play-Dienste-gcm: 9.0.0 .Sie unvereinbar Bibliotheken Sie

3

mir passiert entdeckt auf build.grade außer Kraft setzen müssen, weil der facebook Aktualisierung es sdk und ich hatte

compile 'com.facebook.android:facebook-android-sdk:4.+' 

es

compile 'com.facebook.android:facebook-android-sdk:4.15.0' 

löste mein issuee ersetzen.

Ref: https://developers.facebook.com/docs/android/change-log-4.x

Verwandte Themen