查询联系人

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);
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android Studio中查询联系人,您需要使用ContentResolver类和ContactsContract类。以下是一些步骤: 1. 确保您的应用程序具有读取联系人和读取电话状态的权限。您可以在AndroidManifest.xml文件中添加以下行: ``` <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> ``` 2. 在您的活动中,使用ContentResolver类查询联系人。以下是一个示例代码: ``` Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); if (cursor.moveToFirst()) { do { String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); Cursor phoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null); if (phoneCursor.moveToFirst()) { do { String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); Log.d(TAG, "Name: " + name + ", Phone Number: " + phoneNumber); } while (phoneCursor.moveToNext()); } phoneCursor.close(); } while (cursor.moveToNext()); } cursor.close(); ``` 这将查询所有联系人及其电话号码,并将它们记录在日志中。 3. 如果您想将联系人信息显示在屏幕上,您可以使用ListView或RecyclerView等视图组件。您需要创建一个适配器来将联系人数据绑定到视图上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值