이렇게 대책없이 소스를 올려서 죄송합니다..
이 부분이 이름, 전화번호 이메일등을 어떻게 하는 부분인지 해석이 안되네요
어레이 리스트에 이름, 전번, 이메일을 뿌려준다는건지 add가 있어서 등록을 한다는건지 모르겠습니다..
찾아보니 주소록관련 정형화된 틀같은데 잘모르겠습니다
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(
ContactsContract.RawContacts.CONTENT_URI).withValue(
ContactsContract.RawContacts.ACCOUNT_TYPE,
mSelectedAccount.getType()).withValue(
ContactsContract.RawContacts.ACCOUNT_NAME,
mSelectedAccount.getName()).build());
ops
.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
name).build());
ops
.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(
ContactsContract.CommonDataKinds.Phone.NUMBER,
phone).withValue(
ContactsContract.CommonDataKinds.Phone.TYPE,
phoneType).build());
ops.add(ContentProviderOperation.newInsert(
ContactsContract.Data.CONTENT_URI).withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Email.DATA, email)
.withValue(ContactsContract.CommonDataKinds.Email.TYPE,
emailType).build());
ContentResolver에 applyBatch를 이용하여 한번에 삽입하는방식입니다.
위 코드를 예로들면 위코드후에 아래문을 실행하게되면 주소록이 삽입되겠죠
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
ContentProviderOperation는 api5에서 추가된건데
이 이전방식은 이름으로 주소하나 만들어놓고 거기에 나머지 정보를 덧붙이는 형식으로 된듯 하네요..
제가 아는건 이런데 제대로 알고 있는건지 모르겠네요ㅎㅎㅎ;
틀린부분은 다른분들이 지적해주실듯;