联系人操作

主要要添加权限:

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.      }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值