Published 2010. 7. 21. 23:46

밑에 먼저 찾은 방법이 deprecated가 되어 다시 새로운거로 찾음.
================================
1. 추가하기
1) 순차적 방법
//새로운 Account Data 생성
ContentValues values = new ContentValues();
values.put(RawContacts.ACCOUNT_TYPE, "basic");
values.put(RawContacts.ACCOUNT_NAME, "test");
Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
// 등록되었으면 Account 정보 입력
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
values.put(StructuredName.DISPLAY_NAME, "tester");
getContentResolver().insert(Data.CONTENT_URI, values);
이렇게 되면 연락처 생성완료 이후 여기에 이메일 및 기타 다른 정보도 등록할 수 있음
2) batch를 이용한 방법
//먼저 데이타 ArrayList 생성
//여기서 Lists.newArrayList(); 이 부분은 Google Collection API 임
ArrayList<CONTENTPROVIDEROPERATION>ops = Lists.newArrayList();
int rawContactInsertIndex = ops.size();
// 위에서 했던 것처럼 연락처(계정)을 먼저 하나 만들고 그 연락처에 정보를 입력 하는 방식이 아니고
//ContentProviderOperation 에 계정과 계정에 연락처 정보를 셋팅하여 한번에 insert하는 방식
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(RawContacts.ACCOUNT_TYPE, "basic")
.withValue(RawContacts.ACCOUNT_NAME, contactName)
.build());
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
.withValue(StructuredName.DISPLAY_NAME, contactName)
.build());
//여기서 실제 입력을 하게 됨
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
2. 등록된 연락처 목록 가져오기..
//연락처 정보를 가져오는 content uri
Uri uri = ContactsContract.Contacts.CONTENT_URI;
//가져올 컬럼정보 sql쿼리의 select col1, col2 from table1 에서 col1, col2 설정하는 것과 같음
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
//조건 설정 where 절 만드는것과 같음
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '0' ";
String[] selectionArgs = null;
//정렬
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
//조회해서 가져온다
Cursor contactCursor = managedQuery(uri, projection, selection, selectionArgs, sortOrder); 
출처:Android 주소록 다루기 [펌]
</CONTENTPROVIDEROPERATION>

복사했습니다!