Intereting Posts
Я хочу программно сделать снимок экрана моего приложения для Android Android AutoCompleteTextView с данными из веб-службы, проблемы с отображением списка предложений Как может Служба Android знать, что она не связана с какой-либо деятельностью Тихая установка apk программно с помощью системного приложения (без root) Ограничить доступ для загрузки приложения в Google Play Не получать точный ответ от vCard, используя asmack Как избежать установки элемента выбора звонка андроида при настройке адаптера? Как управлять ПК-мышью с устройства Android без клиентского сервера Android: Загрузить изображение с веб-URL CollapsingToolbarLayout устанавливает заголовок только при свертывании Использовать ActiveAndroid для существующего содержимого базы данных Программно переключение мобильных данных на Android 4.4.2 Цель, которая открывает активность «нового календарного события» Как показать открытые / закрытые значения / текст в диаграмме подсвечника androidplot Существуют ли какие-либо другие библиотеки для создания GIF для Android?

Как получить журнал вызовов с определенной даты в android

В моем приложении я получаю весь журнал вызовов, используя этот код. Я возвращаю мне весь журнал вызовов на моем телефоне 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); } } 

Но моя проблема в том, что я хочу получить журнал вызовов с определенной даты, а не на весь журнал вызовов. Я не знаю, как использовать запрос, чтобы получить журнал вызовов с определенной даты. Помогите мне Спасибо

  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----------------------------------"); } 

Возвращенный журнал звонков находится между 25/05/2014 и 30/05/2014. Возвращаемое значение сохраняется в переменной sb, вы можете установить это значение в TextView для тестирования