최근 통화한 기록(특히 Duration)을 얻으려고 합니다.

제 짧은 생각으로는 CallState가  Offhook -> Idle로 넘어갈 때 즉 Idle로 변했을때

CallLog의 가장 최근 해당정보를 읽어오면 될 것이라 생각해서 코드를 다음과 같이 짯습니다.


=============================================================(Call state가 Idle로 변했을때)================
c = getContentResolver().query(CallLog.Calls.CONTENT_URI, new String[] { CallLog.Calls.NUMBER, CallLog.Calls.DURATION}, "number = ?" , new String[] {comingNumber},null);
              
                  c.moveToLast();
                  values.clear();
                  Toast.makeText(getApplicationContext(), c.getString(1), 1).show();
                  values.put("callwhile", c.getString(1));
                  mDatabase.update("tbl_data", values, "number = ? ", new String[]{comingNumber});
====================================================================================================

comingNumber는 제가 따로 정한 변수(Ringing일 때 incomingNumber를 담아두는 변수)입니다. 별로 신경쓰실 필요 없구요..


그런데 문제는 저기 Toast에서 던지는 통화기록의 Duration이 방금한 통화가 아니라 그전에 했던 통화중 젤 최근 것이 나온 다는 것입니다.

제 생각으로는 아마 Offhook -> Idle로 될 때 최근 통화기록 또한 그때 남기는 것이라 CallLog에 Query를 날릴때는 방금한 통화가 미처 기록되지 못했을 것 같습니다.

가장 최근 통화기록을 통화가 끝나자마자 얻으려면 어떻게 하는게 좋을까요??
(바로 드는 생각으로는 딜레이를 주면 될 것 같긴 한데 그건 정말 아닌거 같구 ㅠㅠ )

정말 방법이 없다면 앱 자체에서 통화시간을 계산하도록 해야하겠습니다만... 그래도 CallLog에서 얻을 수 있는 방법이 있다면 좋겠네요