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();
}
}
사용 ContentResolver.registerContentObserver – pskink