ContactsContract获取联系人信息及双向查找联系人信息

添加权限:

 

<uses-permission
		android:name="android.permission.READ_CONTACTS"></uses-permission>
 

 

try {
			/* 必须要有android.permission.READ_CONTACTS权限 */
			Cursor cursor = managedQuery(
					android.provider.ContactsContract.Contacts.CONTENT_URI,
					null, null, null, null);
			/* 将Cursor移到资料最前端 */
			for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor
					.moveToNext()) {

				/* 取得联络人的姓名 */
				String strName = cursor
						.getString(cursor
								.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
				/* 取得联络人的电话 */
				int contactId = cursor.getInt(cursor
						.getColumnIndex(ContactsContract.Contacts._ID));
				Cursor phones = getContentResolver().query(
						ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
						null,
						ContactsContract.CommonDataKinds.Phone.CONTACT_ID
								+ " = " + contactId, null, null);
				int typePhone, resType;
				String numPhone;
				if (phones.getCount() > 0) {
					phones.moveToFirst();
					/* 2.0可以允许User设定多组电话号码,但本范例只捞一组电话号码作示范 */
					typePhone = phones
							.getInt(phones
									.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
					numPhone = phones
							.getString(phones
									.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
					resType = ContactsContract.CommonDataKinds.Phone
							.getTypeLabelResource(typePhone);
					addItem(strName, getString(resType) + ":" + numPhone);//添加到ListView中,此代码略去
				}

			}
		} catch (Exception e) {
			e.printStackTrace();
		}


 

根据号码查找联系人

 

 

public String getContactPeople(String incomingNumber) {
		
		String contactPeople = "";
		
		ContentResolver contentResolver = getContentResolver();
		Cursor cursor = null;

		/* cursor里要放的字段名称 */
		String[] projection = new String[] { ContactsContract.Contacts._ID,
				ContactsContract.Contacts.DISPLAY_NAME,
				ContactsContract.CommonDataKinds.Phone.NUMBER };

		/* 用来电电话号码查找该联系人 */
		cursor = contentResolver.query(
				ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection,
				ContactsContract.CommonDataKinds.Phone.NUMBER + "=?",
				new String[] { incomingNumber }, "");

		/* 找不到联系人 */
		if (cursor.getCount() == 0) {
			contactPeople = "未知联系人";
		} else if (cursor.getCount() > 0) {
			cursor.moveToFirst();
			/* projection这个数组里 */
			contactPeople = cursor.getString(1);
		}
		
		return contactPeople;

	}

根据联系人查找号码

/* 以联系人名称搜索通信录中联系人的电话的method */
	private String getContactPeople(String name) {
		String result = "";
		ContentResolver contentResolver = EX06_23.this.getContentResolver();
		Cursor cursor = null;

		/* 要搜索的字段名称 */
		String[] projection = new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER };

		/* 以联系人的名字去找该联系人的电话 */
		cursor = contentResolver.query(
				ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection,
				ContactsContract.Contacts.DISPLAY_NAME + "=?",
				new String[] { name }, "");

		if (cursor.getCount() != 0) {
			cursor.moveToFirst();
			/* 取得联系人电话 */
			result = cursor.getString(0);
		}
		return result;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ContentProvider是Android中用于管理数据的一种机制,它可以将数据存储在SQLite数据库、文件系统或者其他任何数据源中,并提供给其他应用程序进行访问。在Android中,联系人信息也是通过ContentProvider来管理的。 Android系统提供了一个ContactsProvider来管理联系人信息,它提供了一系列API来访问和操作联系人信息。应用程序可以使用这些API来读取、添加、删除和更新联系人信息。 在使用ContactsProvider时,需要先获取一个ContentResolver对象,然后调用它的query、insert、delete和update等方法来访问和操作联系人信息。例如,可以使用以下代码获取所有联系人的姓名和电话号码: ``` ContentResolver cr = getContentResolver(); Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); Cursor phoneCursor = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id, null, null); while (phoneCursor.moveToNext()) { String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } phoneCursor.close(); } cursor.close(); ``` 这段代码会遍历所有联系人,并输出它们的姓名和电话号码。当然,还可以使用其他API来添加、删除和更新联系人信息

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值