GCM: por qué mi aplicación se bloquea en GCMRegistrar.checkDevice (this);

Tengo una aplicación simple con unas pocas líneas porque estoy tratando de averiguar por qué mi aplicación real se bloquea en GCMRegistrar.checkDevice (esto) (si lo elimino mi aplicación no se bloquea). ¿Alguien puede ayudar? :(:

public class DemoActivity extends Activity { private String TAG = "** pushAndroidActivity **"; private TextView mDisplay; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this); setContentView(R.layout.main); mDisplay = (TextView) findViewById(R.id.display); mDisplay.setText("ciao"); } 

Manifiesto:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.registrazionegcm" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <permission android:name="com.example.registrazionegcm.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.example.registrazionegcm.permission.C2D_MESSAGE" /> <!-- App receives GCM messages. --> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- GCM connects to Google Services. --> <uses-permission android:name="android.permission.INTERNET" /> <!-- GCM requires a Google account. --> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- Keeps the processor from sleeping when a message is received. --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".DemoActivity" android:label="@string/title_activity_demo" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.example.registrazionegcm" /> </intent-filter> </receiver> <service android:name=".GCMIntentService" /> </application> 

Mis errores:

 10-22 21:54:21.075: E/AndroidRuntime(955): FATAL EXCEPTION: main 10-22 21:54:21.075: E/AndroidRuntime(955): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.registrazionegcm/com.example.registrazionegcm.DemoActivity}: java.lang.UnsupportedOperationException: Device does not have package com.google.android.gsf 10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.ActivityThread.access$600(ActivityThread.java:130) 10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 10-22 21:54:21.075: E/AndroidRuntime(955): at android.os.Handler.dispatchMessage(Handler.java:99) 10-22 21:54:21.075: E/AndroidRuntime(955): at android.os.Looper.loop(Looper.java:137) 10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.ActivityThread.main(ActivityThread.java:4745) 10-22 21:54:21.075: E/AndroidRuntime(955): at java.lang.reflect.Method.invokeNative(Native Method) 10-22 21:54:21.075: E/AndroidRuntime(955): at java.lang.reflect.Method.invoke(Method.java:511) 10-22 21:54:21.075: E/AndroidRuntime(955): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 10-22 21:54:21.075: E/AndroidRuntime(955): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 10-22 21:54:21.075: E/AndroidRuntime(955): at dalvik.system.NativeStart.main(Native Method) 10-22 21:54:21.075: E/AndroidRuntime(955): Caused by: java.lang.UnsupportedOperationException: Device does not have package com.google.android.gsf 10-22 21:54:21.075: E/AndroidRuntime(955): at com.google.android.gcm.GCMRegistrar.checkDevice(GCMRegistrar.java:98) 10-22 21:54:21.075: E/AndroidRuntime(955): at com.example.registrazionegcm.DemoActivity.onCreate(DemoActivity.java:16) 10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.Activity.performCreate(Activity.java:5008) 10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 10-22 21:54:21.075: E/AndroidRuntime(955): ... 11 more 10-22 21:54:21.085: W/ActivityManager(167): Force finishing activity com.example.registrazionegcm/.DemoActivity 10-22 21:54:21.095: W/WindowManager(167): Failure taking screenshot for (246x410) to layer 21010 10-22 21:54:21.205: I/jdwp(265): Ignoring second debugger -- accepting and dropping 10-22 21:54:21.395: I/Choreographer(167): Skipped 40 frames! The application may be doing too much work on its main thread. 10-22 21:54:21.615: W/ActivityManager(167): Activity pause timeout for ActivityRecord{411d90d0 com.example.registrazionegcm/.DemoActivity} 10-22 21:54:22.177: I/Choreographer(265): Skipped 120 frames! The application may be doing too much work on its main thread. 10-22 21:54:32.339: W/ActivityManager(167): Activity destroy timeout for ActivityRecord{411d90d0 com.example.registrazionegcm/.DemoActivity} 

Es probable que se ejecuta en un dispositivo que no es compatible con GCM, por lo que su llamada a GCMRegistrar.checkDevice( this ); Está lanzando una excepción. Compruebe su logcat para estar seguro.

Si lo está probando en un emulador, asegúrese de tener el emulador configurado para utilizar las API de Google. Cuando crea el emulador, la ventana create new AVD tiene un cuadro "Target". Seleccione algo en ese cuadro que diga "API de Google".

Crear emulador con google api

Plz Sigue los Siguientes Pasos

1 . Incluya "gcm.jar" en las librerías de su aplicación

2 . Android SDK Manager => Extras => Instalar Google Cloud Messaging para Android Library (Obsoleto)

3 . Android SDK Manager => Android 4.3 (API 18) => Instalar las API de Google

En eclipse

1) Descargar gcm.jar

2) buildpath -> configurar la ruta de construcción -> bibliotecas -> jar externo -> path_to_gcmjar

Este es el punto más importante

3) copiar gcm.jar y pegar en la carpeta lib del proyecto

  • ¿Qué significa "si el dispositivo está conectado a GCM"
  • No se pudo resolver: com.google.android.gms: play-services-gcm: 7.5.
  • Google-services.json para diferentes productFlavors
  • Alerta de visualización cuando llega el empuje
  • ¿Los viejos ficheros GCM siguen activos incluso después de una desinstalación?
  • Después de actualizar los servicios de reproducción de Google a las notificaciones de envío 8.4.0 mostradas por ellos mismos
  • ID de registro GCM de Android longitud máxima
  • ¿Es necesaria una cuenta de Google para GCM (Google Cloud Messaging)?
  • GCM 3.0 - gcm no muestra automáticamente la notificación con el parámetro de notificación
  • Problemas para implementar el nuevo cliente de GCM para Android
  • La importación com.google.android.gms.gcm.GoogleCloudMessaging no se puede resolver
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.