Quiero leer registros de llamadas en el android
Posible duplicado:
¿Cómo puedo recuperar los contactos utilizados recientemente en android?
Quiero leer los contactos usados recientemente.
- Android 4.0.3 y actividad final
- Ocultar tono dtmf al marcar
- Cómo redireccionar una llamada de un número a otro en android
- Android: agregar tono de llamada al contacto no funciona en un contacto que acabo de agregar, pero funciona en un contacto que agregué en la sincronización anterior
- ContentResolver.insert devuelve null
Alguien sabe cómo hacer esto?
- ¿Cómo hacer una llamada de video mediante programación en Android 2.2 o superior?
- Implementación del método de devolución de llamada en Android
- ¿Cómo puedo seleccionar un contacto del registro de llamadas?
- Finalizar la llamada en android mediante programación
- Intención de ser despedido cuando termina una llamada?
- Trigger touch callout en iOS / android
- ¿Cómo reproducir archivos de audio cuando se inicia la llamada?
- Establecimiento de una etiqueta en una llamada de Retrofit para cancelar por etiqueta más tarde
1. Crear observador:
class CustomContentObserver extends ContentObserver { public CustomContentObserver(Handler handler) { super(handler); } @Override public boolean deliverSelfNotifications() { return false; } public void logCallLog() { long dialed; String columns[]=new String[] { CallLog.Calls._ID, CallLog.Calls.NUMBER, CallLog.Calls.DATE, CallLog.Calls.DURATION, CallLog.Calls.TYPE}; Cursor c; c = getContentResolver().query(Uri.parse("content://call_log/calls"), columns, null, null, "Calls._ID DESC"); //last record first while (c.moveToNext()) { dialed=c.getLong(c.getColumnIndex(CallLog.Calls.DATE)); Log.i("CallLog","type: " + c.getString(4) + "Call to number: "+number+", registered at: "+new Date(dialed).toString()); } } public void onChange(boolean selfChange) { super.onChange(selfChange); Log.d("PhoneService", "StringsContentObserver.onChange( " + selfChange + ")"); logCallLog(); } }
2. Registrar observador:
Uri mediaUri = android.provider.CallLog.Calls.CONTENT_URI; Log.d("PhoneService", "The Encoded path of the media Uri is " + mediaUri.getEncodedPath()); CustomContentObserver custObser = new CustomContentObserver(handler); imageContentRsr.registerContentObserver(mediaUri, false, custObser);
EDIT: A partir de Jellybean (4.1), ahora necesita los dos permisos
<uses-permission android:name="android.permission.READ_CALL_LOG" />
Para que esto funcione y no lance una excepción de denegación de permisos
- Escritura y lectura de archivos desde la tarjeta SD en Android
- Valor de dimensión definido de Android XML que produce resultados inesperados