主要要添加权限:
1. <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
2. <uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
删除联系人
1. private void delContact(Context context, String name) {
3. Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },
5. ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { name }, null);
7. ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
9. if (cursor.moveToFirst()) {
10. do {
11. long Id = cursor.getLong(cursor.getColumnIndex(Data.RAW_CONTACT_ID));
13. ops.add(ContentProviderOperation.newDelete(
14. ContentUris.withAppendedId(RawContacts.CONTENT_URI,Id)).build());
15. try {
16. getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
17. }
18. catch (Exception e){}
19. } while (cursor.moveToNext());
20. cursor.close();
21. }
22. }
更新联系人信息
1. private void updateContact(Context context,String oldname, String name, String phone, String email,String website, String organization, String note) {
3. Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },
5. ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { oldname }, null);
6. cursor.moveToFirst();
7. String id = cursor.getString(cursor.getColumnIndex(Data.RAW_CONTACT_ID));
8. cursor.close();
9. ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
更新电话号码
1. ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
2. .withSelection(
4. Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?" +
5. " AND " + Phone.TYPE + "=?",new String[] { String.valueOf(id),Phone.CONTENT_ITEM_TYPE,
6. String.valueOf(Phone.TYPE_HOME) }).withValue(Phone.NUMBER, phone).build());
8. // 更新email
9. ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
10. .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?" +" AND " + Email.TYPE + "=?",new String[] { String.valueOf(id),Email.CONTENT_ITEM_TYPE,
11. String.valueOf(Email.TYPE_HOME) }).withValue(Email.DATA, email).build());
13. // 更新姓名
14. ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
15. .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),StructuredName.CONTENT_ITEM_TYPE }).withValue(StructuredName.DISPLAY_NAME, name).build());
17. // 更新网站
18. ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
19. .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Website.CONTENT_ITEM_TYPE }).withValue(Website.URL, website).build());
21. // 更新公司
22. ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
23. .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Organization.CONTENT_ITEM_TYPE })
24. .withValue(Organization.COMPANY, organization).build());
26. // 更新note
27. ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
28. .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Note.CONTENT_ITEM_TYPE }).withValue(Note.NOTE, note).build());
30. try{
31. getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
32. } catch (Exception e) {
33. }
34. }
添加联系人
2. private void addContact(Context context, String name,
3. String organisation,String phone, String fax, String email, String address,String website){
5. ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
7. //在名片表插入一个新名片
8. ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
9. .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null).withValue(ContactsContract.RawContacts._ID, 0).withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).withValue(ContactsContract.RawContacts.AGGREGATION_MODE,ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED).build());
12. // add name
13. //添加一条新名字记录;对应RAW_CONTACT_ID为0的名片
14. if (!name.equals("")) {
15. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
16. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
17.ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE).withValue(
18. ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,name).build());
19. }
21. //添加昵称
22. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
23. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Nickname.NAME,"Anson昵称").build());
26. // add company
27. if (!organisation.equals("")) {ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Organization.COMPANY,organisation).withValue(ContactsContract.CommonDataKinds.Organization.TYPE,ContactsContract.CommonDataKinds.Organization.TYPE_WORK).build());
32. }
34. // add phone
35. if (!phone.equals("")) {
36. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
37. .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,1).build());
40. }
42. // add Fax
43. if (!fax.equals("")) {ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(
45. ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
46. ContactsContract.Data.MIMETYPE,
47. ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE).withValue(
48. ContactsContract.CommonDataKinds.Phone.NUMBER,fax)
49. .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
50. ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK).build());
51. }
55. // add email
56. if (!email.equals("")) {
57. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
58. .withValueBackReference(
59. 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,1).build());
61. }
63. // add address
64. if (!address.equals("")) {ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE).withValue(
67. ContactsContract.CommonDataKinds.StructuredPostal.STREET,address)
68. .withValue(ContactsContract.CommonDataKinds.StructuredPostal.TYPE,
69. ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK).build());
70. }
72. // add website
73. if (!website.equals("")) {
74. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
75. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
76. .withValue(ContactsContract.Data.MIMETYPE,
77. ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE).withValue(
78. ContactsContract.CommonDataKinds.Website.URL,website)
79. .withValue(
80. ContactsContract.CommonDataKinds.Website.TYPE,
81. ContactsContract.CommonDataKinds.Website.TYPE_WORK).build());
82. }
84. // add IM
85. String qq1="452824089";
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(
87. ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
88. ContactsContract.Data.MIMETYPE,
89. ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE).withValue(
90. ContactsContract.CommonDataKinds.Im.DATA1,qq1)
91. .withValue(
92. ContactsContract.CommonDataKinds.Im.PROTOCOL,
93. ContactsContract.CommonDataKinds.Im.PROTOCOL_QQ).build());
95. // add logo image
96. // Bitmap bm = logo;
97. // if (bm != null) {
98. // ByteArrayOutputStream baos = new ByteArrayOutputStream();
99. // bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
100. // byte[] photo = baos.toByteArray();
101. // if (photo != null) {
102. //
103. // ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
104. // .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
105. // .withValue(ContactsContract.Data.MIMETYPE,
106. // ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)
107. // .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, photo)
108. // .build());
109. // }
110. // }
112. try {
113. context.getContentResolver().applyBatch(
114. ContactsContract.AUTHORITY, ops);
115. } catch (Exception e){
116. }
118. }