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----------------------------------");
}
Das Anrufprotokoll, das zwischen 25/05/2014 & 30/05/2014 zurückgekehrt ist. Der zurückgegebene Wert ist alle in SB-Variable gespeichert, können Sie diesen Wert in einem TextView zum Testen
Ziemlich sicher, dass dieser Code verursachen und OOB-Ausnahme bei Zuweisung des Datumswerts zu mSelectionArgs [1] sollte mSelectionArgs [0] = sein createDate (2013,1,1) .toString(). Besser wäre es, den String-Wert zu initialisieren, anstatt eine leere Zeichenfolge zu erstellen und dann sofort zu verwerfen, wie in: String [] mSelectionArgs = {String.valueOf (createDate (2013,1,1))}. – Brandon
Wird die Antwort beantwortet, wenn Brandon 'Fix eingebaut ist. – Kobor42
Hallo Leute, ich habe den obigen Code verwendet, aber ich bekomme immer noch einen leeren Cursor, obwohl ich Daten im Anrufprotokoll habe? irgendwelche Ideen? – kAnNaN