0

デバイスから通話ログを取得し、その日付などをフォーマットし、すべての通話をリストに表示し、期間を分単位で計算するためのコードを表示する 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();

            }

デバイスにあるすべての通話ログが表示されます。特定の期間の通話ログを取得するにはどうすればよいですか。前もって感謝します!ここにビューがあります

4

1 に答える 1

1

現在、日付を取得していますcallDayTime。この日付が特定の日付 A と B の間にあるかどうかを確認してください。日付期間外の場合は、使用している文字列バッファーにこのエントリを追加しないでください。

            sb.append("\nPhone Number:--- " + phNumber + " \nCall Date:--- " + dateStr
                            + " \nCall duration in min :--- " + CallsDurationStr);
            sb.append("\n----------------------------------");
于 2013-02-23T21:10:11.960 に答える