IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]11_android系统联系人(更新用户名称为例)介绍ContentProviderOperation的使用

    redarmy_chen发表于 2014-06-16 20:31:14
    love 0
    package com.example.contactdemos.test;
    
    import java.util.ArrayList;
    
    import android.content.ContentProviderOperation;
    import android.content.ContentProviderResult;
    import android.content.OperationApplicationException;
    import android.os.RemoteException;
    import android.provider.ContactsContract;
    import android.test.AndroidTestCase;
    
    public class ContactsTest extends AndroidTestCase {
    
    	/**
    	 * 根据主键ID更新
    	 */
    	public void updateByData_ID() {
    
    		ArrayList ops = new ArrayList();
    		// 把与这个display_name关联的data2,data3,data5清空,主要是保证(raw_contacts表中的display_name的正确性)
    		ContentProviderOperation operation = ContentProviderOperation
    				.newUpdate(ContactsContract.Data.CONTENT_URI)
    				.withSelection(ContactsContract.Data._ID + "=?",
    						new String[] { String.valueOf(1) })
    				.withValue(
    						ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,// 对应data表中的data2字段
    						null)
    				.withValue(
    						ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME,// 对应data表中的data3字段
    						null)
    				.withValue(
    						ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME,// 对应data表中的data5字段
    						null)
    				.withValue(
    						ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,// 对应data表中的data1字段
    						"陈红军").build();
    
    		ops.add(operation);
    		try {
    
    			ContentProviderResult rs[] = getContext().getContentResolver()
    					.applyBatch(ContactsContract.AUTHORITY, ops);
    
    			for (ContentProviderResult s : rs) {
    				System.out.println(s.toString());
    			}
    		} catch (RemoteException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (OperationApplicationException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}
    
    	/**
    	 * 根据raw_contact_id和mimetype更新的操作
    	 */
    	public void updateByRawContactIdAndMimeType() {
    
    		ArrayList ops = new ArrayList();
    
    		// 把与这个display_name关联的data2,data3,data5清空,主要是保证(raw_contacts表中的display_name的正确性)
    		ContentProviderOperation operation = ContentProviderOperation
    				.newUpdate(ContactsContract.Data.CONTENT_URI)
    				.withSelection(
    						ContactsContract.Data.RAW_CONTACT_ID + "=?" + " AND "
    								+ ContactsContract.Data.MIMETYPE + "=?",
    						new String[] {
    								String.valueOf(1),
    								ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE })
    				.withValue(
    						ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, // 对应data表中的data2字段
    						null)
    				.withValue(
    						ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, // 对应data表中的data3字段
    						null)
    				.withValue(
    						ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME,// 对应data表中的data5字段
    						null)
    				.withValue(
    						ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,// 对应data表中的data1字段
    						"夏淑琼").build();
    
    		ops.add(operation);
    		try {
    
    			ContentProviderResult rs[] = getContext().getContentResolver()
    					.applyBatch(ContactsContract.AUTHORITY, ops);
    
    			for (ContentProviderResult s : rs) {
    				System.out.println(s.toString());
    			}
    		} catch (RemoteException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (OperationApplicationException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }
    




沪ICP备19023445号-2号
友情链接