Cómo obtener el registro de llamadas desde fecha específica en android

En mi aplicación estoy recibiendo el registro de todas las llamadas con este código. Me devuelve todo el registro de llamadas en mi teléfono android.

public class CallLogHelper { public static Cursor getAllCallLogs(ContentResolver cr) { // reading all data in descending order according to DATE String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; Uri callUri = Uri.parse("content://call_log/calls"); Cursor curCallLogs = cr.query(callUri, null, null, null, strOrder); return curCallLogs; } public static void insertPlaceholderCall(ContentResolver contentResolver, String name, String number) { ContentValues values = new ContentValues(); values.put(CallLog.Calls.NUMBER, number); values.put(CallLog.Calls.DATE, System.currentTimeMillis()); values.put(CallLog.Calls.DURATION, 0); values.put(CallLog.Calls.TYPE, CallLog.Calls.OUTGOING_TYPE); values.put(CallLog.Calls.NEW, 1); values.put(CallLog.Calls.CACHED_NAME, name); values.put(CallLog.Calls.CACHED_NUMBER_TYPE, 0); values.put(CallLog.Calls.CACHED_NUMBER_LABEL, ""); Log.d("Call Log", "Inserting call log placeholder for " + number); contentResolver.insert(CallLog.Calls.CONTENT_URI, values); } } 

Pero mi problema es que quiero obtener el registro de llamadas de fecha específica, no todos los registros de llamadas. No tengo ni idea de cómo utilizar la consulta para obtener el registro de llamadas desde fecha específica. Ayúdeme gracias

  String[] strFields = { android.provider.CallLog.Calls.NUMBER, android.provider.CallLog.Calls.TYPE, android.provider.CallLog.Calls.CACHED_NAME, android.provider.CallLog.Calls.DATE, android.provider.CallLog.Calls.DURATION, }; // Defines a string to contain the selection clause String mSelectionClause = android.provider.CallLog.Calls.DATE+ " >= ?"; // Initializes an array to contain selection arguments String[] mSelectionArgs = { createDate(2013,1,1).toString() }; Cursor mCallCursor = currentContext.getContentResolver().query( android.provider.CallLog.Calls.CONTENT_URI, strFields, mSelectionClause, mSelectionArgs, null ); return mCallCursor; public static Long createDate(int year, int month, int day) { Calendar calendar = Calendar.getInstance(); calendar.set(year, month, day); return calendar.getTimeInMillis(); } 
 StringBuffer sb = new StringBuffer(); String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; Uri callUri = Uri.parse("content://call_log/calls"); Calendar calendar = Calendar.getInstance(); calendar.set(2014, Calendar.MAY, 25); String fromDate = String.valueOf(calendar.getTimeInMillis()); calendar.set(2014, Calendar.MAY, 30); String toDate = String.valueOf(calendar.getTimeInMillis()); String[] whereValue = {fromDate,toDate}; Cursor cur = cr.query(callUri, null, android.provider.CallLog.Calls.DATE+" BETWEEN ? AND ?", whereValue, strOrder); //Cursor cur = cr.query(callUri, null, android.provider.CallLog.Calls.DATE+" >= ?", whereValue, strOrder); // loop through cursor while (cur.moveToNext()) { String callNumber = cur.getString(cur .getColumnIndex(android.provider.CallLog.Calls.NUMBER)); String callName = cur .getString(cur .getColumnIndex(android.provider.CallLog.Calls.CACHED_NAME)); String callDate = cur.getString(cur .getColumnIndex(android.provider.CallLog.Calls.DATE)); SimpleDateFormat formatter = new SimpleDateFormat( "dd-MMM-yyyy HH:mm"); String dateString = formatter.format(new Date(Long .parseLong(callDate))); String callType = cur.getString(cur .getColumnIndex(android.provider.CallLog.Calls.TYPE)); String dir=null; int dircode = Integer.parseInt(callType); switch (dircode) { case CallLog.Calls.OUTGOING_TYPE: dir = "OUTGOING"; break; case CallLog.Calls.INCOMING_TYPE: dir = "INCOMING"; break; case CallLog.Calls.MISSED_TYPE: dir = "MISSED"; break; } String isCallNew = cur.getString(cur .getColumnIndex(android.provider.CallLog.Calls.NEW)); String duration = cur.getString(cur .getColumnIndex(android.provider.CallLog.Calls.DURATION)); sb.append("\nPhone Number:--- " + callNumber + " \nName:--- "+ callName +" \nCall Type dir:--- " + dir + " \nCall Date:--- " + dateString + " \n duration in sec :--- " + duration); sb.append("\n----------------------------------"); } 

El registro de llamadas que se devuelve es entre 25/05/2014 y 30/05/2014. El valor devuelto se almacena en la variable sb, puede establecer este valor en un TextView para la prueba

  • Obtener cuenta con cursor.getCount () o para ejecutar un rawQuery con un COUNT en una cláusula SQL?
  • Ubicación de la base de datos sqlite en el dispositivo
  • ¿Soporta la plataforma Android SpatiaLite?
  • Eliminación automática de objetos anidados en ORMLite
  • Android piensa que no estoy cerrando mi base de datos! ¿Por qué?
  • Cómo utilizar correctamente claves foráneas en Android, utilizando SQLite y OrmLite
  • SQLite externo Contenido del archivo que accede al error
  • SQLite Android: parámetro nullColumnHack en los métodos insert / replace
  • ORMLite insertar o reemplazar
  • No se puede capturar Java (Android) Excepción con try-catch
  • Necesita ayuda para leer de la base de datos SQLite para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.