2013-02-23 60 views
0

我正在創建一個android應用程序,該應用程序從設備獲取通話記錄,格式化日期等,顯示列表中的所有通話以及一個片段的代碼來計算持續時間到幾分鐘。它的工作正常,但我希望我的應用程序顯示來自每月20日到下個月20日的通話記錄。這樣我就可以計算一個月內我講多少分鐘。這是我的代碼從特定日期(例如每個月的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

你正在日期callDayTime現在檢查這個日期是你的具體日期A和B之間。如果是你的約會持續時間之外,不加入這個字符串條目緩衝區所使用。

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

感謝您的回答。它似乎很不錯,如果我想從日期A提取到B,但如果要重置日誌並開始顯示下個月B到C ??????????????????????謝謝 – 2013-02-23 21:14:55

+0

我從你的問題得到的是,你想根據特定的時期過濾掉日誌。 我所建議的是比較日期,並添加只包含你日期之間的日期域的輸入。 – AAnkit 2013-02-24 07:08:11

+0

:(不好意思,但是我需要重設特定日期後的值,然後列表必須顯示該日期的通話記錄,我可以打電話給系統日期,然後將其與日誌進行比較並遞增列表,這可能嗎? – 2013-02-26 05:52:59

相關問題