2011-01-14 11 views
12

Puedo insertar programáticamente una entrada en el registro de llamadas de Android con un número, fecha, duración & tipo PERO ¿no puedo encontrar la manera de incluir también una foto, etiqueta y nombre? La entrada que estoy agregando es para un contacto existente con el mismo número exacto. He notado en un dispositivo Motorola que aparece el nombre & si el número coincide con un Contacto existente pero en mi HTC Incredible falta algo?¿Cómo insertar mediante programación entradas de registro de llamadas CON nombre de visualización y foto?

que hacer lo siguiente .. (no sabía lo que incluso a tratar para la foto)

ContentValues values = new ContentValues(); 
values.put(CallLog.Calls.NUMBER, number); 
values.put(CallLog.Calls.CACHED_NAME, name); 
values.put(CallLog.Calls.CACHED_NUMBER_LABEL, label); 
values.put(CallLog.Calls.DATE, date); 
values.put(CallLog.Calls.DURATION, duration); 
values.put(CallLog.Calls.TYPE, myCallType); 
context.getContentResolver().insert(CallLog.Calls.CONTENT_URI, values); 
+1

En HTC, ¿ha intentado dar solo el número de fecha y duración sin los valores de caché? – Kobor42

+0

También se ha formulado una pregunta similar aquí sin respuestas: http://stackoverflow.com/questions/21577391/android-updating-a-call-log-entry-in-htc-custom-dialers-call-log-not -trabajo –

Respuesta

2

no se puede insertar fotos en el registro de llamadas en sí; esos se almacenan en el contacto que está vinculado a la entrada del registro de llamadas. Consulte ContactsContract.Data para obtener más información acerca de cómo hacer eso.

En cuanto al dispositivo HTC que no actualiza el registro de llamadas con una foto existente, podría estar relacionado con la forma en que HTC Sense almacena en caché las entradas del registro de llamadas; He visto problemas similares que solo aparecen en los dispositivos Sense.

Las entradas del registro de llamadas normalmente se almacenan en la tabla calls en la base de datos de la aplicación Contactos (/data/data/com.android.providers.contacts/databases/contacts2.db). Por alguna razón, parece que HTC Sense no actualiza las entradas existentes del registro de llamadas si los datos de contacto cambian, pero otras ROM lo hacen.

Por ejemplo, si uso un HTC EVO LTE con stock Sense 5.0 para hacer una llamada a alguien que he guardado como "Jenny Smith", se crea una entrada en la tabla calls, que incluye un campo name, donde almacena a Jenny Smith. Si actualizo su información de contacto a "Jenny Jones" y le hago una nueva llamada, se almacena una nueva entrada en la tabla calls con el nombre Jenny Jones, pero la entrada anterior no se cambia. La pantalla del Historial de llamadas muestra todas las llamadas como Jenny Jones, pero la base de datos tiene un nombre antiguo.

Otros dispositivos que he probado (incluido un Nexus 5) actualizan las entradas anteriores en la tabla calls cuando se visualiza el Registro de llamadas. Es probable que su dispositivo Motorola se comporte como el Nexus 5, actualizando los datos según sea necesario.

No soy un asistente de base de datos, pero tengo una cantidad razonable de familiaridad con ellos. Desde una perspectiva de estructura de base de datos, me parece extraño que cualquier información específica de contacto esté almacenada en esa tabla calls (contiene un campo raw_contacts_id que está vinculado al mismo campo en la tabla contacts de esa base de datos donde toda la información de contacto real se almacena), pero así es como se implementa.

1

La única manera razonable de hacerlo (que a mí me funciona de todos modos) es agregar un contacto directamente al teléfono y luego agregar el registro de llamadas apuntando a ese contacto, luego puede quitar el contacto del teléfono. El único problema con esto es si su aplicación se mata antes de eliminar el contacto, por lo que tendría que implementar algún tipo de limpieza en el siguiente lanzamiento de la aplicación. Todo es muy complicado para lo que debería ser una tarea simple.

+0

En mi experiencia, si eliminas el contacto, las fotos asociadas también desaparecerán del registro de llamadas. El registro de llamadas no almacena fotos, el contacto sí lo hace. – mike47

Cuestiones relacionadas