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} 

3 Solutions collect form web for “GCM: por qué mi aplicación se bloquea en GCMRegistrar.checkDevice (this);”

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

  • Invalidar todos los tokens gcm
  • No se puede obtener el archivo de configuración de GCM
  • ¿Puede Google Cloud Messaging trabajar con Facebook?
  • Se ha cambiado el ID de registro de GCM
  • Iniciar la aplicación cuando se recibe la notificación de GCM
  • No puede conectarse al servidor de Google Cloud Connection
  • Pasar parámetros a GcmTaskService
  • Alerta de visualización cuando llega el empuje
  • Registro de GCM con dos identificadores de registro de trabajo diferentes
  • Android NUEVO GCM PUSH (con servicios de Google Play)
  • Azure Notification Hub ya no acepta la Clave API de GCM
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.