您可以根據日期範圍自行篩選結果。
int date = mCursor.getColumnIndex(CallLog.Calls.DATE);
while (mCursor.moveToNext()) {
String callDate = mCursor.getString(date);
Date callDayTime = new Date(Long.valueOf(callDate));
// filter by date
如果您的篩選條件是很簡單的(比如說,你想兩個時間之間的呼叫),則可以形成一個查詢,只返回給定範圍內的日期。例如,爲了從中午所有呼叫至晚上七時在今年的10月12日:
Calendar cal = Calendar.getInstance();
cal.set(2013, Calendar.OCTOBER, 12, 12, 0, 0);
Date afterDate = cal.getTime();
cal.set(2013, Calendar.OCTOBER, 12, 19, 0, 0);
Date beforeDate = cal.getTime();
final String SELECT = CallLog.Calls.DATE + ">?" + " AND "
+ CallLog.Calls.DATE + "<?";
Cursor managedCursor = getContentResolver().query(
CallLog.Calls.CONTENT_URI,
new String[] { CallLog.Calls.DATE, CallLog.Calls.DURATION,
CallLog.Calls.TYPE, CallLog.Calls.NUMBER,
CallLog.Calls._ID },
SELECT,
new String[] { String.valueOf(afterDate.getTime()),
String.valueOf(beforeDate.getTime()) },
CallLog.Calls.DATE + " desc");
如果你想爲中午和下午7點之間的調用過濾不論白天,我想到的第一個循環是你最好的選擇(你可能需要使用大的SELECT
子句,或者想出如何從SQL中的long
值得到小時。
沒關係,Craigy,但我不想手動迭代和檢查遊標中的每一行以進行過濾。我想通過在'mSelection'或'mSelectionArgs'中提供一些值直接過濾日誌的方法。 –
@MihirShah是有道理的。我更新了答案,這可能會或可能不會工作取決於你時間間隔。 – Craigy