- 論壇徽章:
- 0
|
轉(zhuǎn):marvin
android 聯(lián)系人數(shù)據(jù)庫(kù)(2.0以后)
最近研究了下android 2.0的聯(lián)系人數(shù)據(jù)庫(kù)。
主要數(shù)據(jù)有三張表:contacts, raw_contacts,data。
contacts:主要是raw_contacts的一個(gè)合并。
raw_contacts:是每條記錄表示一條聯(lián)系人。
data:最基本的表,其中包含所有聯(lián)系人的數(shù)據(jù)。每條記錄都有一個(gè)mime type代表該記錄的類(lèi)型。
新增一條聯(lián)系人:
- 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
- }
復(fù)制代碼 |
|