从特定日期到日期提取呼叫日志(例如,每个月的20到20日)

时间:2013-02-23 21:04:09

标签: android calllog

我正在创建一个Android应用程序,它从设备获取呼叫日志,格式化其日期等,显示列表中的所有呼叫以及一段代码来计算持续时间到分钟。它工作正常,但我希望我的应用程序显示通话记录,从每月20日到下个月20日。所以我可以计算一个月内我说话的时间。这是我的代码

private String getCallDetails() {

                StringBuffer sb = new StringBuffer();
                Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null,
                        null, null, null);
                int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
                int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
                int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
                int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
                sb.append("Call Details :");
                while (managedCursor.moveToNext()) {
                    String phNumber = managedCursor.getString(number);
                    String callType = managedCursor.getString(type);
                    String callDate = managedCursor.getString(date);
                    Date callDayTime = new Date(Long.valueOf(callDate));
                    String dateStr = new SimpleDateFormat("dd:MM:yyyy", Locale.ENGLISH).format(callDayTime);

                    String callDuration = managedCursor.getString(duration);
                    float caldu =Float.parseFloat(callDuration); //convert seconds into minutes eg. 4secs to 1 minute
                    float value = caldu/60;
                    String tempStr=""+value;
                    StringTokenizer tokens = new StringTokenizer(tempStr, ".");
                    String strToken1=tokens.nextToken();
                    String strToken2=tokens.nextToken();
                    int lVal=Integer.parseInt(strToken1);
                    int rVal=Integer.parseInt(strToken2);
                    String CallsDurationStr = null;
                    if(rVal>0)
                    {
                        lVal=lVal+1;
                        CallsDurationStr=""+lVal;
                    }
                    else if(rVal==0)
                    {
                        CallsDurationStr=""+lVal;
                    }

                    String dir = null;
                    int dircode = Integer.parseInt(callType);
                    if(dircode==CallLog.Calls.OUTGOING_TYPE)
                    {
                        dir="outgoing";
                        sb.append("\nPhone Number:--- " + phNumber + " \nCall Date:--- " + dateStr
                                + " \nCall duration in min :--- " + CallsDurationStr);
                        sb.append("\n----------------------------------");
                    }

                }
                managedCursor.close();
                return sb.toString();

            }

显示我在设备中的所有通话记录。如何从特定时间段获取通话记录。提前致谢!here is a view

1 个答案:

答案 0 :(得分:1)

您正在callDayTime获取日期,现在检查此日期是否在您的特定日期A和B之间。如果它超出您的日期持续时间,请不要在您正在使用的字符串缓冲区中添加此条目。

            sb.append("\nPhone Number:--- " + phNumber + " \nCall Date:--- " + dateStr
                            + " \nCall duration in min :--- " + CallsDurationStr);
            sb.append("\n----------------------------------");