Leer mensajes de Hangouts de Google con Android

Tengo una aplicación que lee mensajes GTalk utilizando TTS. Google Hangouts reemplazó a GTalk, por lo que ahora debo integrarme con Hangouts. Finalmente conseguí un observador de contenido que se llama cuando Hangouts recibe un mensaje.

getContentResolver().registerContentObserver( Uri.withAppendedPath(Uri .parse("content://com.google.android.apps.babel.content.EsProvider/"), "messages"), true, observer); 

Cuando el observador es llamado

  public void onChange(final boolean selfChange) { if (paused) { Toast.makeText(application, "paused", Toast.LENGTH_LONG).show(); return; } Cursor message = null; Cursor conversation = null; Cursor contact = null; //Toast.makeText(application, "getting messages", Toast.LENGTH_LONG).show(); try { final String[] messageProjection = new String[] { "body", "date", "type" }; /*message = getContentResolver() .query(Uri.withAppendedPath( Uri.parse("content://com.google.android.providers.talk/"), "messages"), messageProjection, "err_code = 0", null, "date DESC");*/ message = getContentResolver() .query(Uri.withAppendedPath( Uri.parse("content://com.google.android.apps.babel.content.EsProvider/"), "messages"), messageProjection, "err_code = 0", null, "date DESC"); if (!message.moveToFirst()) { Toast.makeText(application, "no messages", Toast.LENGTH_LONG).show(); return; } 

Recibo un error de permiso.

 05-26 07:45:12.262: E/AndroidRuntime(9580): FATAL EXCEPTION: TalkThread 05-26 07:45:12.262: E/AndroidRuntime(9580): java.lang.SecurityException: Permission Denial: opening provider com.google.android.apps.babel.content.EsProvider from ProcessRecord{413dcdb8 9580:a2dp.Vol/u0a10071} (pid=9580, uid=10071) that is not exported from uid 10005 05-26 07:45:12.262: E/AndroidRuntime(9580): at android.os.Parcel.readException(Parcel.java:1425) 05-26 07:45:12.262: E/AndroidRuntime(9580): at android.os.Parcel.readException(Parcel.java:1379) 05-26 07:45:12.262: E/AndroidRuntime(9580): at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:2545) 05-26 07:45:12.262: E/AndroidRuntime(9580): at android.app.ActivityThread.acquireProvider(ActivityThread.java:4647) 05-26 07:45:12.262: E/AndroidRuntime(9580): at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2054) 05-26 07:45:12.262: E/AndroidRuntime(9580): at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1101) 05-26 07:45:12.262: E/AndroidRuntime(9580): at android.content.ContentResolver.query(ContentResolver.java:356) 05-26 07:45:12.262: E/AndroidRuntime(9580): at android.content.ContentResolver.query(ContentResolver.java:315) 05-26 07:45:12.262: E/AndroidRuntime(9580): at a2dp.Vol.service$TalkObserver.onChange(service.java:1724) 

También intenté agregar este permiso a mi manifiesto:

 com.google.android.apps.babel.content.EsProvider.permission.READ_ONLY 

También he encontrado este blog que describe un enfoque para encontrar la forma de interfaz con datos como este.

Estoy abierto a cualquier método que pueda recibir el remitente del mensaje y el texto del mensaje más reciente. No he encontrado ninguna buena documentación en las interfaces de Android con los nuevos Hangouts. Esta fue una característica muy agradable con GTalk y me gustaría obtener la misma funcionalidad con Hangouts. Cualquier pista, información, sugerencias muy apreciado.

    Finalmente decidí leer las notificaciones usando el servicio de accesibilidad. Esto funciona para la mayoría de las aplicaciones bastante bien. Para Hangouts lee el primer mensaje no leído de cada remitente, pero los mensajes posteriores sólo informarán el nombre del remitente seguido de "n mensajes nuevos".

    El código fuente de mi proyecto está aquí: http://code.google.com/p/a2dpvolume/

    Mira Access.java en su mayoría. Este es el servicio de accesibilidad para mi aplicación. Esta página: http://code.google.com/p/a2dpvolume/wiki/Accessibility_Settings explica cómo mi up lo usa.

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