我想只获取最近的通话记录而不是整数,这意味着我上周只能打电话记录
这是我写的代码:
private void getcalldetails() {
Cursor cr=managedQuery(CallLog.Calls.CONTENT_URI,null,null,null,null);
while(cr.moveToNext()){
String number=cr.getString(cr.getColumnIndex(CallLog.Calls.NUMBER));
String calldate=cr.getString(cr.getColumnIndex(CallLog.Calls.DATE));
String callduration=cr.getString(cr.getColumnIndex(CallLog.Calls.DURATION));
Date callDayTime = new Date(Long.valueOf(calldate));
recentslog.add(number+"\n"+callDayTime+" "+callduration);
}
Collections.reverse(recentslog);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,recentslog);
recentslist.setAdapter(adapter);
}
答案 0 :(得分:0)
来自活动文档:
Cursor managedQuery (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
selection String: SQL WHERE clause.
selectionArgs String: The arguments to selection, if any ?s are pesent
所以,这样的事情应该有效:
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, -7);
Date weekBefore = calendar.getTime();
String selection = CallLog.Calls.DATE + ">?";
String [] selectionArgs = {String.valueOf(weekBefore.getTime())};
Cursor cr = managedQuery(CallLog.Calls.CONTENT_URI, null, selection, selectionArgs, null);