Android 编辑联系人,增、删、改代码

  1. <SPAN style="BACKGROUND-COLOR: rgb(255,255,255); FONT-FAMILY: Arial, Helvetica, sans-serif">最近的一个小项目有一个添加联系人的功能,到网上找了些资料,最后解决问题。</SPAN>  
<span style="font-family:Arial, Helvetica, sans-serif;BACKGROUND-COLOR: rgb(255,255,255)">最近的一个小项目有一个添加联系人的功能,到网上找了些资料,最后解决问题。</span>

在此分享,其中有一个小小的问题,顺带分享解决方法。


增删改代码

删除

  1. private void delContact(Context context, String name) {  
  2.   
  3. Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },  
  4.   
  5. ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { name }, null);  
  6.   
  7. ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();  
  8.   
  9. if (cursor.moveToFirst()) {  
  10. do {  
  11. long Id = cursor.getLong(cursor.getColumnIndex(Data.RAW_CONTACT_ID));  
  12.   
  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. }  
private void delContact(Context context, String name) {

Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },

ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { name }, null);

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

if (cursor.moveToFirst()) {
do {
long Id = cursor.getLong(cursor.getColumnIndex(Data.RAW_CONTACT_ID));

ops.add(ContentProviderOperation.newDelete(
ContentUris.withAppendedId(RawContacts.CONTENT_URI,Id)).build());
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} 
catch (Exception e){}
} while (cursor.moveToNext());
cursor.close();
}
}
修改

  1. <PRE class=html name="code">private void updateContact(Context context,String oldname, String name, String phone, String email,String website, String organization, String note) {  
  2.   
  3. Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },  
  4.   
  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>();</PRE><BR>  
  10. <BR>  
  11. <P></P>  
  12. <PRE></PRE>  
  13. <PRE class=java name="code">ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)  
  14. .withSelection(  
  15.   
  16. Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?" +  
  17. " AND " + Phone.TYPE + "=?",new String[] { String.valueOf(id),Phone.CONTENT_ITEM_TYPE,  
  18. String.valueOf(Phone.TYPE_HOME) }).withValue(Phone.NUMBER, phone).build());  
  19.   
  20. // 更新email   
  21. ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)  
  22. .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?" +" AND " + Email.TYPE + "=?",new String[] { String.valueOf(id),Email.CONTENT_ITEM_TYPE,  
  23. String.valueOf(Email.TYPE_HOME) }).withValue(Email.DATA, email).build());  
  24.   
  25. // 更新姓名   
  26. ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)  
  27. .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),StructuredName.CONTENT_ITEM_TYPE }).withValue(StructuredName.DISPLAY_NAME, name).build());  
  28.   
  29. // 更新网站   
  30. ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)  
  31. .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Website.CONTENT_ITEM_TYPE }).withValue(Website.URL, website).build());  
  32.   
  33. // 更新公司   
  34. ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)  
  35. .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Organization.CONTENT_ITEM_TYPE })  
  36. .withValue(Organization.COMPANY, organization).build());  
  37.   
  38. // 更新note   
  39. ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)  
  40. .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Note.CONTENT_ITEM_TYPE }).withValue(Note.NOTE, note).build());  
  41.   
  42. try{  
  43. getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);  
  44. catch (Exception e) {  
  45. }  
  46. }</PRE><BR>  
  47. <BR>  
  48. <P></P>  
  49. <P>添加</P>  
  50. <P><PRE class=java name="code">private void addContact(Context context, String name,  
  51. String organisation,String phone, String fax, String email, String address,String website,String nickname){  
  52.   
  53. ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();  
  54.   
  55. //在名片表插入一个新名片   
  56. ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)  
  57. .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null).withValue(ContactsContract.RawContacts._ID, 0).withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).withValue(  
  58. ContactsContract.RawContacts.AGGREGATION_MODE,ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED).build());  
  59.   
  60. // add name   
  61. //添加一条新名字记录;对应RAW_CONTACT_ID为0的名片   
  62. if (!name.equals("")) {  
  63. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)  
  64. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(  
  65. ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE).withValue(  
  66. ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,name).build());  
  67. }  
  68.   
  69. //添加昵称</PRE><PRE class=java name="code">if(!nickname.equals("")){   
  70. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)  
  71. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(  
  72. ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Nickname.NAME,nickname).build());</PRE><PRE class=java name="code">}  
  73.   
  74. // add company   
  75. if (!organisation.equals("")) {  
  76. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(ContactsContract.Data.MIMETYPE,  
  77. ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE).withValue(  
  78. ContactsContract.CommonDataKinds.Organization.COMPANY,organisation).withValue(  
  79. ContactsContract.CommonDataKinds.Organization.TYPE,ContactsContract.CommonDataKinds.Organization.TYPE_WORK).build());  
  80. }  
  81.   
  82. // add phone   
  83. if (!phone.equals("")) {  
  84. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)  
  85. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)  
  86. .withValue(ContactsContract.Data.MIMETYPE,  
  87. ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Phone.NUMBER,phone).withValue(ContactsContract.CommonDataKinds.Phone.TYPE,1).build());  
  88. }  
  89.   
  90. // add Fax 传真,一般不用了   
  91. if (!fax.equals("")) {  
  92. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(  
  93. ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(  
  94. ContactsContract.Data.MIMETYPE,  
  95. ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE).withValue(  
  96. ContactsContract.CommonDataKinds.Phone.NUMBER,fax)  
  97. .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,  
  98. ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK).build());  
  99. }  
  100.   
  101.   
  102.   
  103. // add email   
  104. if (!email.equals("")) {  
  105. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)  
  106. .withValueBackReference(  
  107. ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(  
  108. ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Email.DATA,email).withValue(ContactsContract.CommonDataKinds.Email.TYPE,1).build());  
  109. }  
  110.   
  111. // add address   
  112. if (!address.equals("")) {  
  113. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(  
  114. ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE).withValue(  
  115. ContactsContract.CommonDataKinds.StructuredPostal.STREET,address)  
  116. .withValue(ContactsContract.CommonDataKinds.StructuredPostal.TYPE,  
  117. ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK).build());  
  118. }  
  119.   
  120. // add website   
  121. if (!website.equals("")) {  
  122. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)  
  123. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)  
  124. .withValue(ContactsContract.Data.MIMETYPE,  
  125. ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE).withValue(  
  126. ContactsContract.CommonDataKinds.Website.URL,website)  
  127. .withValue(  
  128. ContactsContract.CommonDataKinds.Website.TYPE,  
  129. ContactsContract.CommonDataKinds.Website.TYPE_WORK).build());  
  130. }  
  131.   
  132. // add IM</PRE><PRE class=java name="code" snippet_file_name="blog_20140130_8_3020566" code_snippet_id="175156">if(!im.equals("")){   
  133. //String qq="459255045"; for test   
  134. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(  
  135. ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(  
  136. ContactsContract.Data.MIMETYPE,  
  137. ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE).withValue(  
  138. ContactsContract.CommonDataKinds.Im.DATA1,im)  
  139. .withValue(  
  140. ContactsContract.CommonDataKinds.Im.PROTOCOL,  
  141. ContactsContract.CommonDataKinds.Im.PROTOCOL_QQ).build());  
  142. }  
  143.   
  144. try {  
  145. context.getContentResolver().applyBatch(  
  146. ContactsContract.AUTHORITY, ops);  
  147. catch (Exception e){  
  148. }  
  149.   
  150. }</PRE><P></P>  
  151. <P><BR>  
  152. </P>  
  153. 最后功能可以实现了,我只要添加功能。  
  154. <P>但是很奇怪只能添加一次,所以又要修改,最后找到原因</P>  
  155. <P><PRE class=java name="code" snippet_file_name="blog_20140130_9_849785" code_snippet_id="175156">// 在名片表插入一个新名片   
  156.                 ops.add(ContentProviderOperation  
  157.                                 .newInsert(ContactsContract.RawContacts.CONTENT_URI)  
  158.                                 .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)  
  159.                                 <SPAN style="COLOR: #ff0000">.withValue(ContactsContract.RawContacts._ID, 0)</SPAN>  
  160.                                 .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)  
  161.                                 .withValue(ContactsContract.RawContacts.AGGREGATION_MODE,  
  162.                                                 ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED)  
  163.                                 .build());  
  164. 把上面代码的 红色部分去掉即可</PRE><BR>  
  165. <BR>  
  166. <P></P>  
  167. <P>这是在一个android论坛找到的资料。</P>  
  168. <P>原文地址:<A href="http://www.eoeandroid.com/thread-99617-1-1.html" target=_blank>http://www.eoeandroid.com/thread-99617-1-1.html</A><BR>  
  169. <BR>  
  170. <BR>  
  171. </P>  
  172. <P><BR>  
  173. </P>  

 
 
  1. private void updateContact(Context context,String oldname, String name, String phone, String email,String website, String organization, String note) {  
  2.   
  3. Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },  
  4.   
  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>();  
private void updateContact(Context context,String oldname, String name, String phone, String email,String website, String organization, String note) {

Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID },

ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { oldname }, null);
cursor.moveToFirst();
String id = cursor.getString(cursor.getColumnIndex(Data.RAW_CONTACT_ID));
cursor.close();
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();


 
</pre><pre class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a target=_blank class="ViewSource" title="view plain" href="http://blog.youkuaiyun.com/gopain/article/details/18872751#">view plain</a><a target=_blank class="CopyToClipboard" title="copy" href="http://blog.youkuaiyun.com/gopain/article/details/18872751#">copy</a><a target=_blank class="PrintSource" title="print" href="http://blog.youkuaiyun.com/gopain/article/details/18872751#">print</a><a target=_blank class="About" title="?" href="http://blog.youkuaiyun.com/gopain/article/details/18872751#">?</a></div></div><ol class="dp-j"><li class="alt"><span><span>ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)  </span></span></li><li><span>.withSelection(  </span></li><li class="alt"><span>  </span></li><li><span>Data.RAW_CONTACT_ID + </span><span class="string">"=?"</span><span> + </span><span class="string">" AND "</span><span>+ ContactsContract.Data.MIMETYPE + </span><span class="string">" = ?"</span><span> +  </span></li><li class="alt"><span></span><span class="string">" AND "</span><span> + Phone.TYPE + </span><span class="string">"=?"</span><span>,</span><span class="keyword">new</span><span> String[] { String.valueOf(id),Phone.CONTENT_ITEM_TYPE,  </span></li><li><span>String.valueOf(Phone.TYPE_HOME) }).withValue(Phone.NUMBER, phone).build());  </span></li><li class="alt"><span>  </span></li><li><span></span><span class="comment">// 更新email </span><span>  </span></li><li class="alt"><span>ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)  </span></li><li><span>.withSelection(Data.RAW_CONTACT_ID + </span><span class="string">"=?"</span><span> + </span><span class="string">" AND "</span><span>+ ContactsContract.Data.MIMETYPE + </span><span class="string">" = ?"</span><span> +</span><span class="string">" AND "</span><span> + Email.TYPE + </span><span class="string">"=?"</span><span>,</span><span class="keyword">new</span><span> String[] { String.valueOf(id),Email.CONTENT_ITEM_TYPE,  </span></li><li class="alt"><span>String.valueOf(Email.TYPE_HOME) }).withValue(Email.DATA, email).build());  </span></li><li><span>  </span></li><li class="alt"><span></span><span class="comment">// 更新姓名 </span><span>  </span></li><li><span>ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)  </span></li><li class="alt"><span>.withSelection(Data.RAW_CONTACT_ID + </span><span class="string">"=?"</span><span> + </span><span class="string">" AND "</span><span>+ ContactsContract.Data.MIMETYPE + </span><span class="string">" = ?"</span><span>,</span><span class="keyword">new</span><span> String[] { String.valueOf(id),StructuredName.CONTENT_ITEM_TYPE }).withValue(StructuredName.DISPLAY_NAME, name).build());  </span></li><li><span>  </span></li><li class="alt"><span></span><span class="comment">// 更新网站 </span><span>  </span></li><li><span>ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)  </span></li><li class="alt"><span>.withSelection(Data.RAW_CONTACT_ID + </span><span class="string">"=?"</span><span> + </span><span class="string">" AND "</span><span>+ ContactsContract.Data.MIMETYPE + </span><span class="string">" = ?"</span><span>,</span><span class="keyword">new</span><span> String[] { String.valueOf(id),Website.CONTENT_ITEM_TYPE }).withValue(Website.URL, website).build());  </span></li><li><span>  </span></li><li class="alt"><span></span><span class="comment">// 更新公司 </span><span>  </span></li><li><span>ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)  </span></li><li class="alt"><span>.withSelection(Data.RAW_CONTACT_ID + </span><span class="string">"=?"</span><span> + </span><span class="string">" AND "</span><span>+ ContactsContract.Data.MIMETYPE + </span><span class="string">" = ?"</span><span>,</span><span class="keyword">new</span><span> String[] { String.valueOf(id),Organization.CONTENT_ITEM_TYPE })  </span></li><li><span>.withValue(Organization.COMPANY, organization).build());  </span></li><li class="alt"><span>  </span></li><li><span></span><span class="comment">// 更新note </span><span>  </span></li><li class="alt"><span>ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)  </span></li><li><span>.withSelection(Data.RAW_CONTACT_ID + </span><span class="string">"=?"</span><span> + </span><span class="string">" AND "</span><span>+ ContactsContract.Data.MIMETYPE + </span><span class="string">" = ?"</span><span>,</span><span class="keyword">new</span><span> String[] { String.valueOf(id),Note.CONTENT_ITEM_TYPE }).withValue(Note.NOTE, note).build());  </span></li><li class="alt"><span>  </span></li><li><span></span><span class="keyword">try</span><span>{  </span></li><li class="alt"><span>getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);  </span></li><li><span>} </span><span class="keyword">catch</span><span> (Exception e) {  </span></li><li class="alt"><span>}  </span></li><li><span>}  </span></li></ol>
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(

Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?" +
" AND " + Phone.TYPE + "=?",new String[] { String.valueOf(id),Phone.CONTENT_ITEM_TYPE,
String.valueOf(Phone.TYPE_HOME) }).withValue(Phone.NUMBER, phone).build());

// 更新email
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?" +" AND " + Email.TYPE + "=?",new String[] { String.valueOf(id),Email.CONTENT_ITEM_TYPE,
String.valueOf(Email.TYPE_HOME) }).withValue(Email.DATA, email).build());

// 更新姓名
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),StructuredName.CONTENT_ITEM_TYPE }).withValue(StructuredName.DISPLAY_NAME, name).build());

// 更新网站
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Website.CONTENT_ITEM_TYPE }).withValue(Website.URL, website).build());

// 更新公司
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Organization.CONTENT_ITEM_TYPE })
.withValue(Organization.COMPANY, organization).build());

// 更新note
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Note.CONTENT_ITEM_TYPE }).withValue(Note.NOTE, note).build());

try{
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
}
}


 
添加
 

 
 
  1. private void addContact(Context context, String name,  
  2. String organisation,String phone, String fax, String email, String address,String website,String nickname){  
  3.   
  4. ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();  
  5.   
  6. //在名片表插入一个新名片   
  7. ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)  
  8. .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null).withValue(ContactsContract.RawContacts._ID, 0).withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).withValue(  
  9. ContactsContract.RawContacts.AGGREGATION_MODE,ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED).build());  
  10.   
  11. // add name   
  12. //添加一条新名字记录;对应RAW_CONTACT_ID为0的名片   
  13. if (!name.equals("")) {  
  14. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)  
  15. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(  
  16. ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE).withValue(  
  17. ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,name).build());  
  18. }  
  19.   
  20. //添加昵称  
private void addContact(Context context, String name,
String organisation,String phone, String fax, String email, String address,String website,String nickname){

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

//在名片表插入一个新名片
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.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());

// add name
//添加一条新名字记录;对应RAW_CONTACT_ID为0的名片
if (!name.equals("")) {
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());
}

//添加昵称

 
 
  1. if(!nickname.equals("")){  
  2. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)  
  3. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(  
  4. ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Nickname.NAME,nickname).build());  
if(!nickname.equals("")){
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Nickname.NAME,nickname).build());

 
 
  1. }  
  2.   
  3. // add company   
  4. if (!organisation.equals("")) {  
  5. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(ContactsContract.Data.MIMETYPE,  
  6. ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE).withValue(  
  7. ContactsContract.CommonDataKinds.Organization.COMPANY,organisation).withValue(  
  8. ContactsContract.CommonDataKinds.Organization.TYPE,ContactsContract.CommonDataKinds.Organization.TYPE_WORK).build());  
  9. }  
  10.   
  11. // add phone   
  12. if (!phone.equals("")) {  
  13. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)  
  14. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)  
  15. .withValue(ContactsContract.Data.MIMETYPE,  
  16. ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Phone.NUMBER,phone).withValue(ContactsContract.CommonDataKinds.Phone.TYPE,1).build());  
  17. }  
  18.   
  19. // add Fax 传真,一般不用了   
  20. if (!fax.equals("")) {  
  21. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(  
  22. ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(  
  23. ContactsContract.Data.MIMETYPE,  
  24. ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE).withValue(  
  25. ContactsContract.CommonDataKinds.Phone.NUMBER,fax)  
  26. .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,  
  27. ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK).build());  
  28. }  
  29.   
  30.   
  31.   
  32. // add email   
  33. if (!email.equals("")) {  
  34. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)  
  35. .withValueBackReference(  
  36. ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(  
  37. ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Email.DATA,email).withValue(ContactsContract.CommonDataKinds.Email.TYPE,1).build());  
  38. }  
  39.   
  40. // add address   
  41. if (!address.equals("")) {  
  42. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(  
  43. ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE).withValue(  
  44. ContactsContract.CommonDataKinds.StructuredPostal.STREET,address)  
  45. .withValue(ContactsContract.CommonDataKinds.StructuredPostal.TYPE,  
  46. ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK).build());  
  47. }  
  48.   
  49. // add website   
  50. if (!website.equals("")) {  
  51. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)  
  52. .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)  
  53. .withValue(ContactsContract.Data.MIMETYPE,  
  54. ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE).withValue(  
  55. ContactsContract.CommonDataKinds.Website.URL,website)  
  56. .withValue(  
  57. ContactsContract.CommonDataKinds.Website.TYPE,  
  58. ContactsContract.CommonDataKinds.Website.TYPE_WORK).build());  
  59. }  
  60.   
  61. // add IM  
}

// add company
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());
}

// add phone
if (!phone.equals("")) {
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,1).build());
}

// add Fax 传真,一般不用了
if (!fax.equals("")) {
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,fax)
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK).build());
}



// add email
if (!email.equals("")) {
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,1).build());
}

// add address
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(
ContactsContract.CommonDataKinds.StructuredPostal.STREET,address)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.TYPE,
ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK).build());
}

// add website
if (!website.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Website.URL,website)
.withValue(
ContactsContract.CommonDataKinds.Website.TYPE,
ContactsContract.CommonDataKinds.Website.TYPE_WORK).build());
}

// add IM

 
 
  1. if(!im.equals("")){  
  2. //String qq="459255045"; for test   
  3. ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(  
  4. ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(  
  5. ContactsContract.Data.MIMETYPE,  
  6. ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE).withValue(  
  7. ContactsContract.CommonDataKinds.Im.DATA1,im)  
  8. .withValue(  
  9. ContactsContract.CommonDataKinds.Im.PROTOCOL,  
  10. ContactsContract.CommonDataKinds.Im.PROTOCOL_QQ).build());  
  11. }  
  12.   
  13. try {  
  14. context.getContentResolver().applyBatch(  
  15. ContactsContract.AUTHORITY, ops);  
  16. catch (Exception e){  
  17. }  
  18.   
  19. }  
if(!im.equals("")){
//String qq="459255045"; for test
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Im.DATA1,im)
.withValue(
ContactsContract.CommonDataKinds.Im.PROTOCOL,
ContactsContract.CommonDataKinds.Im.PROTOCOL_QQ).build());
}

try {
context.getContentResolver().applyBatch(
ContactsContract.AUTHORITY, ops);
} catch (Exception e){
}

}
 
 
 
最后功能可以实现了,我只要添加功能。
但是很奇怪只能添加一次,所以又要修改,最后找到原因
 

 
 
  1. // 在名片表插入一个新名片   
  2.                 ops.add(ContentProviderOperation  
  3.                                 .newInsert(ContactsContract.RawContacts.CONTENT_URI)  
  4.                                 .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)  
  5.                                 <SPAN style="COLOR: #ff0000">.withValue(ContactsContract.RawContacts._ID, 0)</SPAN>  
  6.                                 .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)  
  7.                                 .withValue(ContactsContract.RawContacts.AGGREGATION_MODE,  
  8.                                                 ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED)  
  9.                                 .build());  
  10. 把上面代码的 红色部分去掉即可  
// 在名片表插入一个新名片
                ops.add(ContentProviderOperation
                                .newInsert(ContactsContract.RawContacts.CONTENT_URI)
                                .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
                                <span style="color:#ff0000;">.withValue(ContactsContract.RawContacts._ID, 0)</span>
                                .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
                                .withValue(ContactsContract.RawContacts.AGGREGATION_MODE,
                                                ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED)
                                .build());
把上面代码的 红色部分去掉即可

 

本文转载自:http://blog.youkuaiyun.com/gopain/article/details/18872751



 
 
这是在一个android论坛找到的资料。
原文地址:http://www.eoeandroid.com/thread-99617-1-1.html


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值