안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요 처음으로 질문 올립니다. 공지사항 모두 필독 하였습니다.
항상 좋은 정보 얻어 가다가 첫 질문을 올려봅니다.
Contacts.People가 2.0으로 넘어오면서 deprecated되면서 ContactsContract.RawContacts를 이용하여
개발을 진행중입니다.
ContentValues values = new ContentValues(); values.put(RawContacts.CONTACT_ID, "Testname");
Uri rawContactUri = activity.getContentResolver().insert(RawContacts.CONTENT_URI, values); Log.e("RawContacts put", rawContactUri.toString()); long rawContactId = ContentUris.parseId(rawContactUri); values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); values.put(Phone.TYPE,Phone.TYPE_MOBILE); values.put(Phone.NUMBER, "01055534545"); Uri dataUri = activity.getContentResolver().insert(Data.CONTENT_URI, values); Log.e("Data.phone put", dataUri.toString()); values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); values.put(StructuredName.DISPLAY_NAME, "Testname"); values.put(StructuredName.FAMILY_NAME,"Test"); values.put(StructuredName.MIDDLE_NAME,"Name"); dataUri = activity.getContentResolver().insert(Data.CONTENT_URI, values); Log.e("Data.StructuredName put", dataUri.toString());
위의 코드 처럼 insert는 성공하였습니다.
하지만 delete에 대해서 테스트 하는 도중에
이런식으로 특정 주소록만 지우고 싶은데 오류가 나네요
String income = RawContacts.CONTACT_ID + "=" + "Testname" ; activity.getContentResolver().delete(RawContacts.CONTENT_URI, income, null);
오류내용은
no such column : Testname : , while compling : SELECT _id FROM raw_contacts WHERE contact_id=Testname
이라고 나오네요.
delete함수의 2번째 매개변수를 null로 주면 모든 주소록의 contact가 삭제가 됩니다.
즉 ... 주소록 전체가 아닌 특정부분만 필터 하여 지우는 방법을 아신다면 답변 부탁드립니다.
감사합니다^^
말씀하신 RawContacts.CONTACT_ID 칼럼에는 Contact id가 들어가야 합니다. 위의 "Testname"은 Contact ID가 아닙니다.
Contact ID를 조회하신 후 다음과 같이 하면 삭제됩니다.
// 아래에서 id는 조회한 Contact ID String이라고 가정
activity.getContentResolver().delete(RawContacts.CONTENT_URI, RawContacts.CONTACT_ID + " = ?", new String[] {id});