- <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>
在此分享,其中有一个小小的问题,顺带分享解决方法。
增删改代码
删除
- 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();
- }
- }
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();
}
}
修改
- <PRE class=html name="code">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><BR>
- <BR>
- <P></P>
- <PRE></PRE>
- <PRE class=java name="code">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) {
- }
- }</PRE><BR>
- <BR>
- <P></P>
- <P>添加</P>
- <P><PRE class=java name="code">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());
- }
- //添加昵称</PRE><PRE class=java name="code">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());</PRE><PRE class=java name="code">}
- // 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</PRE><PRE class=java name="code" snippet_file_name="blog_20140130_8_3020566" code_snippet_id="175156">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){
- }
- }</PRE><P></P>
- <P><BR>
- </P>
- 最后功能可以实现了,我只要添加功能。
- <P>但是很奇怪只能添加一次,所以又要修改,最后找到原因</P>
- <P><PRE class=java name="code" snippet_file_name="blog_20140130_9_849785" code_snippet_id="175156">// 在名片表插入一个新名片
- 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());
- 把上面代码的 红色部分去掉即可</PRE><BR>
- <BR>
- <P></P>
- <P>这是在一个android论坛找到的资料。</P>
- <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>
- <BR>
- <BR>
- </P>
- <P><BR>
- </P>
- 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>();
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) {
}
}
添加
- 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());
- }
-
- //添加昵称
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());
}
//添加昵称
- 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());
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());
- }
-
- // 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
}
// 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
- 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){
- }
-
- }
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){
}
}
最后功能可以实现了,我只要添加功能。
但是很奇怪只能添加一次,所以又要修改,最后找到原因
- // 在名片表插入一个新名片
- 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());
- 把上面代码的 红色部分去掉即可
// 在名片表插入一个新名片
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