2017-01-05 3 views
1

最後の発信通話時間を取得するには、通話ログから発信通話の詳細を表示するコードを実行しました。何度も試してみましたが、問題は解決しませんでした。以下のコードでは、私は、発信コールの詳細情報を得たが、必要な出力はこれを解決するために私を助けて、最後の発信call.Pleaseため の発信通話時間を取得するために...ここで最後の発信通話の発信通話時間を検出するにはどうすればよいですか?

StringBuffer sb = new StringBuffer(); 
    Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls.DATE + " DESC"); 
    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 callDuration = managedCursor.getString(duration); 
     String dir = null; 
     int dircode = Integer.parseInt(callType); 


     switch (dircode) { 
      case CallLog.Calls.OUTGOING_TYPE: 
       dir = "OUTGOING"; 
       sb.append("\nPhone Number:--- " + phNumber + " \nCall Type:--- " + dir + " \nCall Date:--- " + callDayTime + " \nCall duration in sec :--- " + callDuration); 
       sb.append("\n----------------------------------"); 
       textView.setText(sb); 
       break; 

      case CallLog.Calls.INCOMING_TYPE: 
       dir = "INCOMING"; 

       break; 

      case CallLog.Calls.MISSED_TYPE: 
       dir = "MISSED"; 
       break; 
     } 
    } 

    managedCursor.close(); 

答えて

0

あなたが必要とする、ロジックです送信のためのswitch文が真取得するときに、最後の位置を保存するためには、その後、アリ、その位置を取得して、カーソルを移動し、上記のコードでは、更新されたコード

StringBuffer sb = new StringBuffer(); 
      Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls.DATE + " DESC"); 
      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 :"); 
      int currentCount =0, lastPosition =0; 
      while (managedCursor.moveToNext()) { 
       currentCount++; 
       String phNumber = managedCursor.getString(number); 
       String callType = managedCursor.getString(type); 
       String callDate = managedCursor.getString(date); 
       Date callDayTime = new Date(Long.valueOf(callDate)); 
       String callDuration = managedCursor.getString(duration); 
       String dir = null; 
       int dircode = Integer.parseInt(callType); 


       switch (dircode) { 
        case CallLog.Calls.OUTGOING_TYPE: 
         lastPosition = currentCount; 
         dir = "OUTGOING"; 
         sb.append("\nPhone Number:--- " + phNumber + " \nCall Type:--- " + dir + " \nCall Date:--- " + callDayTime + " \nCall duration in sec :--- " + callDuration); 
         sb.append("\n----------------------------------"); 
         Log.e("test", sb.toString()); 
         //textView.setText(sb); 
         break; 

        case CallLog.Calls.INCOMING_TYPE: 
         dir = "INCOMING"; 

         break; 

        case CallLog.Calls.MISSED_TYPE: 
         dir = "MISSED"; 
         break; 
       } 
      } 

      lastPosition--; 
      managedCursor.moveToPosition(lastPosition); 
      int requiredNumber = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); 
      String phNumber = managedCursor.getString(requiredNumber); 
      Log.e("last position number ", phNumber); 
      managedCursor.close(); 
+0

にコードの下に述べたように、必要なデータを取得する私は、最後の発信番号を持って、どのように私は最後の呼び出し発信時間を得ることができます。 @Abdul Waheed –

+0

これは動作します... Tkhs a lot .. –

+0

ようこそ...あなたのコードですでに利用可能なので、継続時間の列を取得する必要があります....電話番号は取得のためのデモでした –

関連する問題