안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
항상 많은 도움 받고있습니다. ^^
이번에는 ContentObserver 에 관한 문제인데요.
서비스를 띄워놓고 안드로이드 기본 주소록의 데이터가 변할때 동작을 주고자 하는데요
Phone.CONTENT_URI 안드로이드 기본 주소록에서 데이터를 변화시킬 때 정보를 가져오는 것은 했습니다.
ContentObserver 의 onChange() 에서 주소록 데이터 변화를 잡을 수 있더라구요.
근데 문제는 변한 주소록의 _ID 값을 가져오는 부분입니다.
주소록에 전화번호나 이름을 바꿀 때 바뀌는 시점은 잡았는데 바뀐 대상의 _ID 값이나 바뀐 필드나 바뀐 내용 같은 것을 알수 있는 방법이 있을까요?
꼭 좀 답변 부탁드려요 ^^
읽어주셔서 감사합니다~~^^
c://datacode
//서비스 시작부분 @Override public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub super.onStart(intent, startId); ContactsChangeManager(this); Log.i("service", "start"); } // ContentObserver에 해당 데이터 베이스의 URI를 등록합니다. private void ContactsChangeManager(Context context) { this.context = context; this.contentResolver = context.getContentResolver(); contentResolver.registerContentObserver(phoneUri, true, phoneObserver ); }
c://datacode
// 해당 데이터베이스(주소록)의 데이터값이 변경시에 onChange() method 가 호출됩니다. private ContentObserver phoneObserver = new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); Log.e("phone", "onChanged : " + selfChange ); favoriteUpdate(); // 동작하는 매서드. 이 매서드에서 데이터를 가공하려고 합니다. // 변한 주소록의 _ID 값, 변한 데이터 값 등이 필요해요~. } };
P.S. 중간에 저 C://data는 경로 넣은건데 왜 저기서 붙어있담 ㅜ.ㅜ