2013-05-23 7 views
0

개별 통화에 대한 통화 기록 세부 정보를 표시하는 방법을 아는 사람이 있습니까? 통화 기록에 들어가면 "1 시간 전, 3 시간 전, 어제, 2 일 전"등의 유일한 시간이 표시됩니다. 통화의 실제 시간과 날짜를 볼 수있는 방법이 있습니까? 또한 나는이 정보를 문자 메시지로 볼 때 "보낸"시간이 정확하지 않은 것으로 나타났습니다. 누군가 12:51 AM에 문자 메시지를 보낼 수 있으며 전화는 "오후 6시 31 분에 전송되고 오전 12:51에 수신되었습니다."라고 표시됩니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?통화 기록에서 날짜와 시간을 계산하는 방법

Cursor callLogCursor = getContentResolver().query(
       android.provider.CallLog.Calls.CONTENT_URI, null, null, null, 
       android.provider.CallLog.Calls.DEFAULT_SORT_ORDER); 
     if (callLogCursor != null) { 
      while (callLogCursor.moveToNext()) { 

       String name = callLogCursor.getString(callLogCursor 
         .getColumnIndex(CallLog.Calls.CACHED_NAME)); 

       String number = callLogCursor.getString(callLogCursor 
         .getColumnIndex(CallLog.Calls.NUMBER)); 

       long dateTimeMillis = callLogCursor.getLong(callLogCursor 
         .getColumnIndex(CallLog.Calls.DATE)); 

       String duration = callLogCursor.getString(callLogCursor 
         .getColumnIndex(CallLog.Calls.DURATION)); 

       int callType = callLogCursor.getInt(callLogCursor 
         .getColumnIndex(CallLog.Calls.TYPE)); 

       Date date = new Date(dateTimeMillis); 
       String dateString = new SimpleDateFormat("yyyy-MM-dd HH:mm") 
         .format(date); 

       if (name == null) 
        name = "Unknown"; 
       int type = 0; 
       switch (callType) { 
       case CallLog.Calls.OUTGOING_TYPE: 
        type = R.drawable.out; 
        break; 

       case CallLog.Calls.INCOMING_TYPE: 
        type = R.drawable.in; 
        break; 

       case CallLog.Calls.MISSED_TYPE: 
        type = R.drawable.miss; 
        break; 
       } 




    Thanks for your help! 
+0

을 날짜와 통화 시간을 얻기위한 샘플 코드입니다. 통화 로그 데이터베이스에서 날짜를 가져와 원하는 형식으로 변환합니다. 다른 문제에 관해서는 sim 로그 타이밍이 저장되는 방법에 대한 생각은 없지만 똑같은 것을 관찰했습니다. 코드에 대한 쿼리가있는 경우 문제에 대한 자세한 정보를 제공 할 수 있습니까? 오류 로그가있을 수 있습니까? 감사합니다. siddu. – siddu

답변

0

여기에 내가 당신의 코드를 실행 didnt는하지만, 통화 기록의 시간을지고의 개념은 거의 동일 통화 로그에서

Cursor callDetailCursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, null,null,null,android.provider.CallLog.Calls.DATE + " DESC limit 50"); 
    int phoneNumber= callDetailCursor.getColumnIndex(CallLog.Calls.NUMBER); 
    int callType=callDetailCursor.getColumnIndex(CallLog.Calls.TYPE); 
    int callDate=callDetailCursor.getColumnIndex(CallLog.Calls.DATE); 
    int callDuration=callDetailCursor.getColumnIndex(CallLog.Calls.DURATION); 
    int isReadint=callDetailCursor.getColumnIndex(CallLog.Calls.IS_READ); 

    Log.i(">>CAllDetails", "getsCallLogs"); 

    if(callDetailCursor.getCount()>0) 
    { 
     while(callDetailCursor.moveToNext()) 
     { 
String phoneNumberString=callDetailCursor.getString(phoneNumber); 
String contactName= getContactName(CallDetails.this, phoneNumberString); 
String callTypeString =callDetailCursor.getString(callType); 
String callDateString=callDetailCursor.getString(callDate); 
String callDurationString=callDetailCursor.getString(callDuration); 
Date callDayTime=new Date(Long.valueOf(callDateString));//converting readable date 

      int callCode = Integer.parseInt(callTypeString); 
      int calldur=Integer.parseInt(callDurationString); 
      if (callCode==2 && calldur>=1) 
      { 




String location[]=dbTools.getLocation(phoneNumberString); 
String addtolist= "Name :"+contactName+"\n"+ 
         "Phone Number: "+phoneNumberString+"\n"+"Call Duration :"+ 
         callDurationString+" Seconds\n"+"Call Date: "+callDayTime+"\n"+ 
       location[0]+" "+location[1]; 
       callArrayList.add(addtolist); 


      } 
     } 
    }callDetailCursor.close(); 
    }