Android-contact通信录

1.权限申请
 <!-- contact 通信录读取权限 -->
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <!-- contact 通信录写权限 -->
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>

2.实现测试
public class ContactsTest extends AndroidTestCase {

    //测试读取通讯录中所有联系人
    public void testReadContact() throws Exception{
        Uri uri=Uri.parse("content://com.android.contacts/contacts");
        ContentResolver resolver=getContext().getContentResolver();
        //通信录分成多个数据表关联
        Cursor cursor=resolver.query(uri,new String[]{"_id"},null,null,null);
        while(cursor.moveToNext()){
            int contact_id=cursor.getInt(0);
            //查询具体的详细信息
            uri=Uri.parse("content://com.android.contacts/contacts/"+contact_id+"/data");
            Cursor dataCursor=resolver.query(uri,
                    new String[]{"mimetype","data1","data2"},null,null,null);
            StringBuilder sb=new StringBuilder("contact:");
            sb.append(contact_id);
            while(dataCursor.moveToNext()){
                String data1=dataCursor.getString(dataCursor.getColumnIndex("data1"));
                String data2=dataCursor.getString(dataCursor.getColumnIndex("data2"));
                sb.append(","+data1+","+data2);
                String mimetype=dataCursor.getString(dataCursor.getColumnIndex("mimetype"));
                if(mimetype.equals("vnd.android.cursor/item/name")){//姓名
                    sb.append(",姓名");
                }else if(mimetype.equals("vnd.android.cursor/item/email_v2")){//邮箱
                    sb.append(",邮箱");
                }else if(mimetype.equals("vnd.android.cursor/item/phone_v2")){//电话
                    sb.append(",电话");
                }
            }
            Log.i("contact",sb.toString());
        }
    }
    
    //模拟来电显示姓名
    public void testNameByPhone() throws Exception{
        String phone="110120130";
        Uri uri=Uri.parse("content://com.android.contacts/data/phones/filter/"+phone);
        ContentResolver resolver=getContext().getContentResolver();
        Cursor cursor=resolver.query(uri,new String[]{"display_name"},null,null,null);
        if(cursor.moveToFirst()){
            String name=cursor.getString(0);
            Log.i("contact",name);
        }
        cursor.close();
    }
    
    //测试添加联系人
    public void testAdd() throws Exception{
        Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");
        ContentResolver resolver=getContext().getContentResolver();
        ContentValues values=new ContentValues();
        long contact_id=ContentUris.parseId(resolver.insert(uri, values));
        //添加姓名
        uri=Uri.parse("content://com.android.contacts/data");
        resolver=getContext().getContentResolver();
        values.put("raw_contact_id",contact_id);
        values.put("mimetype","vnd.android.cursor.item/name");
        values.put("data2","顺悟空");
        resolver.insert(uri, values);
        //添加电话
        values.clear();
        values.put("raw_contact_id",contact_id);
        values.put("mimetype","vnd.android.cursor.item/phone_v2");
        values.put("data1","110112113114");
        values.put("data2","顺悟空");
        resolver.insert(uri, values);
        
        //添加email
        values.clear();
        values.put("raw_contact_id",contact_id);
        values.put("mimetype","vnd.android.cursor.item/email_v2");
        values.put("data1","顺悟空@qq.com");
        values.put("data2","顺悟空");
        resolver.insert(uri, values);
    }
    
    //TODO 测试添加联系人时添加事务控制
    public void testAdd2() throws Exception{
        Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");
        ContentResolver resolver=getContext().getContentResolver();
        //ArrayList<ContentProviderOperation> operations=new ArrayList<ContentProviderOperation>();
//        当前环境不支持,22mv
//        resolver.
    }
}


你可能感兴趣的:(Android-contact通信录)