Problemas de programación de GcmNetworkManager

Estoy utilizando GcmNetworkManager en mi aplicación periódica y una de ejecución de tareas de tarea. Estoy recibiendo estos 2 errores e incapaz de averiguar la razón. La implementación es correcta ya que no puedo reproducir estos problemas en la puesta en escena.

Fatal Exception: java.lang.RuntimeException: Package manager has died at android.app.ApplicationPackageManager.queryIntentServicesAsUser(ApplicationPackageManager.java:700) at android.app.ApplicationPackageManager.queryIntentServices(ApplicationPackageManager.java:706) at com.google.android.gms.gcm.GcmNetworkManager.zzdi(Unknown Source) at com.google.android.gms.gcm.GcmNetworkManager.schedule(Unknown Source) 

&

 Caused by java.lang.IllegalArgumentException: There is no GcmTaskService component registered within this package. Have you extended GcmTaskService correctly? at com.google.android.gms.common.internal.zzx.zzb(Unknown Source) at com.google.android.gms.gcm.GcmNetworkManager.zzdi(Unknown Source) at com.google.android.gms.gcm.GcmNetworkManager.schedule(Unknown Source) 

Cualquier ayuda será apreciada.

Gracias

PS: Dispositivos tiene play-service 8.1+.

Tenía el mismo problema, lo arregló (después de una larga búsqueda y prueba y error) en mi archivo de manifiesto moviendo el elemento <service> xml dentro del elemento <application> . Tal vez esto ayude.

Así que el manifiesto se veía así cuando tuve el error:

 <service> .... </service> <application> .... </application> 

Y fue arreglado cuando lo hice:

 <application> .... <service> .... </service> </application> 

1.) ¿Ha declarado su servicio en su archivo de manifiesto como este:

 <service android:name="MyTaskService" android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" android:exported="true"> <intent-filter> <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/> </intent-filter> </service> 

Asegúrese de haber incluido el permiso BIND_NETWORK_TASK_SERVICE

2) Asegúrese de que su servicio está extendiendo GcmTaskService y está implementando onRunTask .

Consulte: https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmTaskService

Me encontré con el mismo problema. He encontrado una solución, pero no estoy seguro de la razón por qué. En su AndroidManifest.xml no se olvide de establecer enabled = true Sé que esto es un poco raro, pero como he dicho, comenzó a trabajar y ahora, la tarea periódica también se está ejecutando con éxito.

  <service android:name=".periodic.PeriodicTaskService" android:enabled="true" android:exported="true" android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"> <intent-filter> <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" /> </intent-filter> </service> 

Aquí, PeriodicTaskService obviamente, extiende GcmTaskService .

Si falla en las pruebas Robolectric, eso es porque GcmNetworkManager.getInstance(applicationContext).schedule(task) fallará en Robolectric.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.