【发布时间】:2019-08-01 16:53:28
【问题描述】:
我有一个可以在下面使用的代码。但我不能限制它。我只想获取最近的 20 个通话记录。 但这就是我看到所有时间搜索日志的方式。
应该只是最后的通话记录,我只需要看20条。任何帮助,我将不胜感激。
我的代码;
private void getCallLogs() {
ContentResolver cr = getBaseContext().getContentResolver();
Cursor c = cr.query(CallLog.Calls.CONTENT_URI, null, null, null, null);
int totalCall = 1;
if (c != null) {
totalCall = c.getCount();
if (c.moveToFirst()) {
for (int j = 0; j < totalCall; j++) {
String callDate = c.getString(c.getColumnIndexOrThrow(CallLog.Calls.DATE));
String phNumber = c.getString(c.getColumnIndexOrThrow(CallLog.Calls.NUMBER));
String callDuration = c.getString(c.getColumnIndexOrThrow(CallLog.Calls.DURATION));
Date dateFormat= new Date(Long.valueOf(callDate));
String callDayTimes = String.valueOf(dateFormat);
String direction = null;
switch (Integer.parseInt(c.getString(c.getColumnIndexOrThrow(CallLog.Calls.TYPE)))) {
case Telephony.Sms.MESSAGE_TYPE_INBOX:
direction = "OUTGOING";
break;
case Telephony.Sms.MESSAGE_TYPE_SENT:
direction = "INGOING";
break;
case Telephony.Sms.MESSAGE_TYPE_OUTBOX:
direction = "MISSED";
break;
default:
break;
}
Toast.makeText(this, phNumber + direction + callDuration + callDayTimes, Toast.LENGTH_SHORT).show();
}
}
c.close();
}
}
【问题讨论】:
-
你的
for循环正在使用totalCall为什么不把它改成 20 呢? -
totalCall = 20如果这不起作用,请向我们展示您的尝试并解释发生了什么。 -
可以的。但是 for 循环的本质是什么? :/ 它更像是什么都不做,还是我错过了什么?
-
我只是说不需要 for 循环。尽管您的代码现在可以工作,但删除它不会有任何区别,因为它甚至会在应用程序上增加额外的负载。
-
您可以在您的帖子中添加编辑或回复您的答案,让其他有类似问题的冲浪者知道它是如何解决的。
标签: android android-cursor telephonymanager calllog