Android中联系人的操作(读取和写入联系人)

来源:互联网 发布:如何做淘宝供货商 编辑:程序博客网 时间:2024/04/19 06:27

了解了ContentProvider之后,我们可以尝试来操作手机中的联系人。

这个操作是非常常用的,那么首先我们要了解联系人在手机数据库中是如何存储的。



联系人中,有三张表比较关键raw_contact,data.minetype.

下面的代码则是读取和写入联系人。


public class TestContact extends AndroidTestCase {public void getAllContactInfo() throws Exception{String rawbase = "content://com.android.contacts/raw_contacts";String database = "content://com.android.contacts/data";Cursor cursor = getContext().getContentResolver().query(Uri.parse(rawbase), null, null, null, null);while (cursor.moveToNext()) {String id  = cursor.getString( cursor.getColumnIndex("_id"));System.out.println("id ="+ id);Cursor datacursor = getContext().getContentResolver().query(Uri.parse(database), null, "raw_contact_id=?", new String[]{id}, null);while (datacursor.moveToNext()) {//看看data表中有哪些列名//String[]  names = datacursor.getColumnNames();//for(int i =0;i<names.length;i++){//System.out.println(names[i]);//}String type = datacursor.getString(datacursor.getColumnIndex("mimetype"));System.out.println(type);//取出邮箱姓名和电话号码三种数据if("vnd.android.cursor.item/email_v2".equals(type)){String data1 = datacursor.getString( datacursor.getColumnIndex("data1"));System.out.println("邮箱 "+ data1);}else if("vnd.android.cursor.item/name".equals(type)){String data1 = datacursor.getString( datacursor.getColumnIndex("data1"));System.out.println("姓名 "+ data1);}else if("vnd.android.cursor.item/phone_v2".equals(type)){String data1 = datacursor.getString( datacursor.getColumnIndex("data1"));System.out.println("电话号码 "+ data1);}}datacursor.close();}cursor.close();}//写入联系人public void writeContact() throws Exception{String rawbase = "content://com.android.contacts/raw_contacts"; ContentValues values = new ContentValues(); Uri  uri = getContext().getContentResolver().insert(Uri.parse(rawbase), values); //返回的raw_contact 表中的_id long id = ContentUris.parseId(uri);  String database = "content://com.android.contacts/data"; ContentValues nameValues = new ContentValues(); nameValues.put("mimetype", "vnd.android.cursor.item/name"); nameValues.put("data1", "wangwu"); nameValues.put("raw_contact_id", id); getContext().getContentResolver().insert(Uri.parse(database), nameValues);  ContentValues phoneValues = new ContentValues(); phoneValues.put("mimetype", "vnd.android.cursor.item/phone_v2"); phoneValues.put("data1", "999999"); phoneValues.put("raw_contact_id", id); getContext().getContentResolver().insert(Uri.parse(database), phoneValues);  ContentValues emailValues = new ContentValues(); emailValues.put("mimetype", "vnd.android.cursor.item/email_v2"); emailValues.put("data1", "wangwu@sina.cn"); emailValues.put("raw_contact_id", id); getContext().getContentResolver().insert(Uri.parse(database), emailValues);}}






0 0