查询联系人

package com.itheima.contact;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.test.AndroidTestCase;

public class ContactTest extends AndroidTestCase {
	private Uri rawContactsUri = Uri.parse("content://com.android.contacts/raw_contacts");
	private Uri dataUri = Uri.parse("content://com.android.contacts/data");
	
	public void testRead() {
		ContentResolver resolver = getContext().getContentResolver();
		
		List<Contact> list = new ArrayList<Contact>();
		
		// 查询raw_contacts表, 得到所有的id, 每一个id代表一个联系人
		Cursor rawContactsCursor = resolver.query(rawContactsUri, new String[] { "_id" }, null, null, null);
		while (rawContactsCursor.moveToNext()) {
			int id = rawContactsCursor.getInt(0);
			Contact c = new Contact();
			list.add(c);
			
			// 用每个id作为条件, 查询data表
			//这里如果写mimetype_id 会报异常 java.lang.IllegalArgumentException: Invalid column mimetype_id  imetype_id 没有这一列 mimetype 关联好的
			Cursor dataCursor = resolver.query(dataUri, new String[]{"mimetype", "data1"}, "raw_contact_id=?", new String[] { id + "" }, null);
			while (dataCursor.moveToNext()) {
				String mimetype = dataCursor.getString(0);
				String data1 = dataCursor.getString(1);
				if (mimetype.equals("vnd.android.cursor.item/name")) {
					c.setName(data1);
				} else if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {
					c.setPhone(data1);
				} else if ("vnd.android.cursor.item/email_v2".equals(mimetype)) {
					c.setEmail(data1);
				}
			}
		}
		
		for (Contact contact : list) {
			System.out.println(contact);
		}
	}
	
	public void testWriteContact() {
		ContentResolver resolver = getContext().getContentResolver();
		ContentValues values = new ContentValues();
		
		// 先向raw_contacts表中写一个id, 自动生成
		Uri resultUri = resolver.insert(rawContactsUri, values);
		long id = ContentUris.parseId(resultUri);
		
		// 然后用这个id向data表中写3条数据
		values.put("raw_contact_id", id);
		values.put("mimetype", "vnd.android.cursor.item/name");
		values.put("data1", "LYD");
		resolver.insert(dataUri, values);
		
		values.put("mimetype", "vnd.android.cursor.item/phone_v2");
		values.put("data1", "18801099999");
		resolver.insert(dataUri, values);
		
		values.put("mimetype", "vnd.android.cursor.item/email_v2");
		values.put("data1", "lyd@itcast.cn");
		resolver.insert(dataUri, values);
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值