Ich versuche, ein neues Google Cloud Messaging-System zu verwenden, habe jedoch einige Probleme.
Ich habe das Dokument Erste Schritte gelesen und die Demo-App überprüft. Danach habe ich Anforderungen an meine Anwendung angewendet und dann ein neues virtuelles Gerät mit API 16 erstellt.
Wenn ich jedoch versuche, mein Gerät bei GCM zu registrieren, schlägt dies aufgrund der folgenden Zeile fehl:
GCMRegistrar.checkDevice(getApplicationContext());
In logcat sehe ich folgende Fehler:
07-05 07:06:31.925: E/AndroidRuntime(691): FATAL EXCEPTION: main
07-05 07:06:31.925: E/AndroidRuntime(691): java.lang.UnsupportedOperationException: Device does not have package com.google.android.gsf
07-05 07:06:31.925: E/AndroidRuntime(691): at com.google.android.gcm.GCMRegistrar.checkDevice(GCMRegistrar.java:83)
07-05 07:06:31.925: E/AndroidRuntime(691): at aero.tav.mobile.genel$4.onClick(genel.java:201)
07-05 07:06:31.925: E/AndroidRuntime(691): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
07-05 07:06:31.925: E/AndroidRuntime(691): at android.os.Handler.dispatchMessage(Handler.java:99)
07-05 07:06:31.925: E/AndroidRuntime(691): at android.os.Looper.loop(Looper.java:137)
07-05 07:06:31.925: E/AndroidRuntime(691): at android.app.ActivityThread.main(ActivityThread.java:4745)
07-05 07:06:31.925: E/AndroidRuntime(691): at java.lang.reflect.Method.invokeNative(Native Method)
07-05 07:06:31.925: E/AndroidRuntime(691): at java.lang.reflect.Method.invoke(Method.java:511)
07-05 07:06:31.925: E/AndroidRuntime(691): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-05 07:06:31.925: E/AndroidRuntime(691): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-05 07:06:31.925: E/AndroidRuntime(691): at dalvik.system.NativeStart.main(Native Method)
Ich hatte meinem Klassenpfad gcm.jar hinzugefügt. Ich weiß nicht, was los ist.
android
google-cloud-messaging
Bahadir Arslan
quelle
quelle
Google APIs (Google Inc).
Antworten:
Mir scheint, Sie verwenden den falschen Emulator.
Der Standardemulator verwendet einen normalen Android-Emulator, der keine Google-Pakete enthält und nicht alle möglichen Dinge wie Karten, c2dm und solche Sachen ausführen kann.
Sie möchten lediglich einen neuen Emulator erstellen, der die Google-APIs unterstützt.
Wählen Sie dann beim Ausführen des Projekts den Emulator aus, auf dem der Zielname ausgeführt wird
Google APIs (Google Inc).
Viel Glück.
quelle
Es wird wahrscheinlich auf einem Gerät ausgeführt, das GCM nicht unterstützt. Rufen Sie daher GCMRegistrar.checkDevice auf (this). wirft eine Ausnahme. Überprüfen Sie Ihren Logcat, um sicherzugehen.
Wenn Sie es auf einem Emulator testen, stellen Sie sicher, dass der Emulator für die Verwendung von Google-APIs eingerichtet ist. Wenn Sie den Emulator erstellen, enthält das Fenster "Neues AVD erstellen" das Feld "Ziel". Wählen Sie in diesem Feld "Google APIs" aus.
quelle