2014-03-24 4 views
0

저는 안드로이드 개발에 초보자입니다. 통화 로그에서 발생한 변경 사항을 모니터링하고 싶습니다. 내 코드는 마지막 최근 통화 로그까지 모든 통화 기록을 가져옵니다. 앱을 실행하면 최신 로그를 포함하여 모든 로그를 다시 가져 오지만 최근 변경 사항 만 원합니다. . 제발 어떻게 도와 드릴까요? contentOberser? 도와주세요. 앱이 BroadcastReceiver를 사용하여 응답하고 매니페스트에 IntentFilter을 만들 얻을 수있는 수신 통화에 발사되는 Intent이 경우,이 내 코드contentOberser를 사용하여 통화 로그가 변경되었는지 확인하는 방법.

private void conatctDetails() 
    { 
     StringBuffer sb = new StringBuffer(); 
     Cursor c1 = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME); 
     sb.append("Contact details:"); 
     try 
     { 
     while(c1.moveToNext()) 
      { 
       String id = c1.getString(c1.getColumnIndex(ContactsContract.Contacts._ID)); 
       String name =c1.getString(c1.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
       String timesContacted =c1.getString(c1.getColumnIndex(ContactsContract.Contacts.TIMES_CONTACTED)); 
       String lastTimeContacted =c1.getString(c1.getColumnIndex(ContactsContract.Contacts.LAST_TIME_CONTACTED)); 

       String number=""; 
      // String number =c1.getString(c1.getColumnIndex(CommonDataKinds.Phone.NUMBER)); 
       if(id==null||name==null) 
        continue; 
       Cursor cur = getContentResolver().query(CommonDataKinds.Phone.CONTENT_URI, null, CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null); 
       if(cur==null) 
        continue; 
       number = ""; 
       while(cur.moveToNext()) 
       { 
        number = cur.getString(cur.getColumnIndex(CommonDataKinds.Phone.NUMBER)); 
        sb.append("\n Contact Number:--"+number); 
       } 

       sb.append("\n Contact Name:--"+name+"\n Contact ID:--"+id+"\n Last Time Contacted:--"+lastTimeContacted+"\n Total Time Contacted:--"+timesContacted); 

     sb.append("\n----------------------------"); 
      } 
     //c1.close(); 
     contact.setText(sb); 

    } 
    catch(Exception e) 
    { 

    } 
     finally 
     { 
      c1.close(); 
     } 
    } 
+0

사용 ContentResolver.registerContentObserver – pskink

답변

0

입니다.

또는 앱을 시작할 때 단지 공급자를 조회 ...

ACTION_PHONE_STATE_CHANGED은 당신이 듣고는 TelephonyManager.CALL_STATE_RINGING 있는지 확인 할 수있는 TelephonyManager 의도이다.