- 论坛徽章:
- 0
|
转:marvin
android 联系人数据库(2.0以后)
最近研究了下android 2.0的联系人数据库。
主要数据有三张表:contacts, raw_contacts,data。
contacts:主要是raw_contacts的一个合并。
raw_contacts:是每条记录表示一条联系人。
data:最基本的表,其中包含所有联系人的数据。每条记录都有一个mime type代表该记录的类型。
新增一条联系人:
- 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());
- // Ask the Contact provider to create a new contact Log.i(TAG,
- "Selected account: " + mSelectedAccount.getName() + " ("
- + mSelectedAccount.getType() + ")");
- Log.i(TAG, "Creating contact: " + name);
- try {
- getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
- } catch (Exception e) {
- // Display warning
- }
复制代码 |
|