【发布时间】:2023-03-27 17:41:01
【问题描述】:
想获取今天、昨天、过去 7 天和过去 30 天的通话记录历史记录,以及我想显示该特定号码的来电和去电的总持续时间。
假设 abc 有 3 个拨出电话和 1 个拨入电话。我应该得到这些电话的总持续时间。
让我知道我们是否可以通过光标 GroupBy 或 ORDER BY 子句而不是循环和添加持续时间来获取持续时间和调用日志。只需给我粗略的结构以获得更好的解决方案并且可以有效地工作。
String[] whereValue=null;
Calendar calendar = Calendar.getInstance();
String currentDate = String.valueOf(calendar.getTimeInMillis());
switch (period) {
case DAY:
whereValue = new String[]{getTimeFrom(period),currentDate};
break;
case YESTERDAY:
whereValue = new String[]{getTimeFrom(period),currentDate};
break;
case WEEK:
whereValue = new String[]{getTimeFrom(period),currentDate};
break;
case MONTH:
whereValue = new String[]{getTimeFrom(period),currentDate};
break;
default:
Log.d(Utils.LOG_TAG, "Error:");
}
String strOrder = android.provider.CallLog.Calls.DATE + " DESC";
Uri callUri = Uri.parse("content://call_log/calls");
Cursor cur = context.getContentResolver().query(callUri, null, android.provider.CallLog.Calls.DATE+" BETWEEN ? AND ?", whereValue, strOrder);
String callNumber = cur.getString(cur
.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
String callName = cur
.getString(cur
.getColumnIndex(android.provider.CallLog.Calls.CACHED_NAME));
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:
case CallLog.Calls.INCOMING_TYPE:
break;
}
String duration = cur.getString(cur
.getColumnIndex(android.provider.CallLog.Calls.DURATION));
上面的代码甚至不能用于获取从日期到日期之间的通话记录。有什么帮助吗?
【问题讨论】:
标签: android android-contentprovider duration android-cursor calllog