`

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;
	}
  • 大小: 21.8 KB
分享到:
评论
1 楼 a13525177343 2013-01-05  
楼主代码很简练清晰,顶一个

相关推荐

    android中ContactsContract获取联系人的方法

    它是一个内容提供者(Content Provider),允许应用通过标准的 Uri(统一资源标识符) 查询、插入、更新或删除联系人信息。这篇博客文章《android中ContactsContract获取联系人的方法》深入探讨了如何使用这个API来...

    Android2.0 中读取联系人——ContactsContract

    在Android 2.0及更高版本中,由于SDK对联系人数据的访问方式进行了更新,开发者需要使用新的API来读取和操作联系人信息。本文将详细介绍如何使用`ContactsContract`类来实现这一功能。 在Android 2.0之前,开发人员...

    ContactsContract读取联系人的异步方法

    这篇博客“ContactsContract读取联系人的异步方法”深入探讨了如何利用这个API以非阻塞的方式获取用户联系人信息,这对于提高应用程序性能和用户体验至关重要。下面我们将详细讲解ContactsContract API以及如何实现...

    Android-ContactsContract联系人增删改查

    例如,`ContactsContract.Contacts` 表示联系人信息,`ContactsContract.CommonDataKinds.Phone` 表示联系人的电话号码,`ContactsContract.CommonDataKinds.Email` 表示联系人的电子邮件地址等。 ### 增加联系人 ...

    Android 简单的获取联系人的信息

    3. 使用ContentResolver查询ContactsContract来获取联系人信息。 4. 从Cursor中提取所需字段,如姓名和电话号码。 通过以上步骤,我们就能实现“Android简单的获取联系人的信息”这一功能。在实际开发中,还需要...

    火山一键获取所有联系人信息类.rar

    3. **权限申请**:在Android 6.0(API级别23)及以上版本,获取联系人信息需要运行时权限。你需要在AndroidManifest.xml中声明读取联系人数据的权限(`...

    获取联系人信息进行查看

    要根据电话号码获取联系人信息,首先需要查询`ContactsContract.Data`表,因为该表包含了联系人的具体字段,如电话号码、姓名等。以下是一个基本的查询示例: ```java Uri contactUri = Uri.withAppendedPath...

    android 联系人 SIM卡 最近联系人 通讯录 获取源代码

    在Android开发中,获取联系人、SIM卡信息以及最近联系人列表是常见的需求。下面将详细解释这些概念和实现方式。 一、Android联系人管理 Android系统提供了ContentProvider接口来访问和操作联系人数据。主要涉及到...

    Android获取手机通讯录、sim卡联系人及调用拨号界面方法

    首先,要获取手机通讯录的联系人信息,我们需要访问Android的Content Provider,这是一个用于在应用程序之间共享数据的接口。在Android中,`ContactsContract`类提供了对系统通讯录的访问。以下是如何获取手机通讯录...

    Android软件开发之获取通讯录联系人信息

    在Android软件开发中,获取...总之,Android软件开发中获取通讯录联系人信息的过程涉及权限管理、ContentResolver和ContactsContract类的使用。通过合理的代码设计和权限控制,开发者可以安全、高效地实现这一功能。

    安卓获取联系人列表

    接下来,你可以通过Content Resolver查询Contacts Contract库中的数据,Contacts Contract是Android提供的API,用于访问和管理联系人信息。 描述中提到的"安卓获取手机联系人demo"是一个具体的实例,可能包含一个...

    查看并获取联系人电话

    在Android和iOS等移动操作系统中,查看和获取联系人电话是一项常见的功能,广泛应用于社交应用、通讯工具和其他需要用户授权访问联系人信息的软件中。本文将深入探讨如何在这些平台上实现这一功能。 首先,我们从...

    添加手机联系人信息到特别关心列表或者常用联系人

    本文将深入探讨如何实现这一功能,包括获取手机联系人信息以及如何将这些信息整合到自定义的特别关心或常用联系人列表。 首先,我们需要获取手机中的联系人数据。Android提供了ContentResolver和ContactsContract类...

    联系人列表,索引,分组

    1. 获取联系人数据:通过ContentResolver查询ContactsContract类提供的内容提供者,获取所有联系人或特定分组的联系人信息。 2. 创建索引:对联系人数据进行索引,以提升搜索性能。 3. 分组管理:实现对联系人分组的...

    联系人信息获取添加

    本教程将详细讲解如何在Android应用中获取联系人信息以及如何添加新的联系人。 一、获取联系人信息 在Android中,有两种主要的方式来获取设备上的联系人信息: 1. 使用ContentResolver和ContactsContract类: ...

    获取联系人信息

    在Android系统中,获取联系人信息是常见的功能之一,它涉及到Android系统的Content Provider机制,用于在应用程序之间共享数据。在本教程中,我们将深入探讨如何按照字母顺序获取手机中的联系人信息,就像手机通讯录...

    Androidの联系人群组Group操作

    在Android操作系统中,联系人管理是一项重要的功能,它允许用户组织和管理个人及商务联系人的信息。本节将深入探讨Android中的联系人群组(Group)操作,这些操作通常涉及到编程接口的使用,以便在应用程序中实现...

    android开发 查找通讯录取得联系人信息apk

    本文将深入探讨如何在Android中实现这个功能,主要基于标题所提及的"android开发 查找通讯录取得联系人信息apk"。 首先,我们需要了解Android的权限管理系统。在AndroidManifest.xml文件中,你需要声明`READ_...

    Android通讯录管理(获取联系人、通话记录、短信消息)

    这篇教程将深入探讨如何在Android应用中获取联系人信息、通话记录以及短信消息。首先,我们来了解一下基本概念。 1. **获取联系人信息**: Android提供了一套完整的API来访问和操作联系人数据。主要涉及`...

Global site tag (gtag.js) - Google Analytics