2012-11-23 3 views
1

부재 중 전화가 왔을 때 활동을 시작하고 싶습니다.하지만 통화 기록에서 최근에 부재 중 통화 항목을 읽을 수 없지만 현재 통화 기록보다 먼저 항목을 읽습니다. 전화 상태가 유휴 상태 일 때 그것을 읽습니다.안드로이드 전화 로그 최신 항목

예 : 부재 중 통화 항목이 11:10과 11:11에 각각 하나씩 있다고 가정합니다. 12시 12 분에 부재중 전화가 오면 내 활동은 12시 12 분 11 초 11,11,11시에 얻은 부재 중 전화를 표시해야합니다. 11 : 11,11 : 10을 읽습니다. 최신 항목이 없습니다. 나는 어떻게해야합니까? 나는 서비스를 사용하고 전화 기록, 전화 상태를 읽는다.

Cursor c = getContentResolver().query(allCalls, null, null, null, order); 
    if (c.moveToFirst()) { 
    do{ 
     // getting number,type,ack etc} 
    while (c.moveToNext()); } 
+2

부재중 전화 항목을 어떻게 읽으십니까? –

+0

우리가 사용하고있는 코드를 볼 필요가 있습니다. 아마도 첫 번째 코드를 놓친 작은 버그가있을 수 있습니다. –

+0

커서를 사용하여 .. 커서 C = getContentResolver(). (모든 호출, null, null, null, 순서); .. 나는 첫 번째 항목에서 읽을 moveToFirst 부울을 사용하고 있습니다. – user1848374

답변

0

당신이 TelephonyManagerPhoneStateListener를 사용하여 수신해야합니다.

이 코드는 당신이 그것을 수행하는 방법을 보여줍니다 :

if(lastStart == TelephonyManager.CALL_STATE_RINGING) 
{ 
    long now = System.currentTimeMillis(); 
    long duration = (now-ringStartTime)/1000; 
    bindService.AddMissCallInfo(ringPhoneNumber, ringStartTime, duration); 
    Log.i(Constants.Tag,"service add miss call!"); 
} 

코드에서 촬영 : http://code.google.com/p/android-miss-call/source/browse/trunk/src/com/call/DialPhoneStateListener.java?r=3

0

는이처럼 사용할 수 있습니다.

 c=mContext.getContentResolver().query(CallLog.Calls.CONTENT_URI, projection, null, null, CallLog.Calls._ID + " DESC"); 
     if(c.getCount()!=0){ 
       c.moveToFirst(); 
       lastCallnumber = c.getString(0); 
       lastCallnumber=FormatNumber(lastCallnumber);      
       String type=c.getString(1); 
       String duration=c.getString(2); 
       String name=c.getString(3); 
       String id=c.getString(4); 
       System.out.println("CALLLLing:"+lastCallnumber+"Type:"+type+"\t id:"+id); 
if(type.equals("3")){ 
    //you can get last missedcall here 
} 

시도해 볼 수 있습니다.