Ubicación Actualizaciones de ubicación de solicitudes de cliente con extras parcelables en PendingIntent

Estoy usando LocationClient con PendingIntent para obtener actualizaciones de ubicación.

PendingIntent.getService(context, 0, new Intent(context, OnLocationAvail.class), PendingIntent.FLAG_UPDATE_CURRENT) 

El código de arriba funciona bien. Obtengo la ubicación de la clave LocationClient.KEY_LOCATION_CHANGED

Pero cuando tengo unos extras de datos parcelables como se describe a continuación, el servicio se llama con los datos parcelables pero la clave LocationClient.KEY_LOCATION_CHANGED en los extras de intención siempre es nula.

 Intent callbackIntent = new Intent(context, OnLocationAvail.class); callbackIntent.putExtra(SOME_KEY, PARCELABLE_DATA); PendingIntent.getService(context, 0, callbackIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

El problema fue cuando el LocationClient empuja una actualización a través de la devolución de llamada PendingIntent, el proceso no tiene ninguna información del ClassLoader ya que está ocurriendo fuera del contexto de la aplicación y en un proceso diferente.

El siguiente enlace me ayudó a reducir el problema. https://code.google.com/p/android/issues/detail?id=6822

Solución:

Utilice un paquete de hack cuando solicite una actualización de ubicación.

 Bundle bundle = new Bundle(); bundle.putParcelable("com.foo.parcel", some_parcel); callbackPendingIntent.putExtra("com.foo.bundle",bundle); 

Al recibir la actualización de la ubicación.

 Bundle oldBundle = intent.getBundleExtra("com.foo.bundle"); some_parcel = oldBundle.getParcelable("com.foo.parcel"); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.