`
rayln
  • 浏览: 431440 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android查询所有联系人和根据号码查询联系人方法

 
阅读更多
直接看例子:
package com.msg.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract;

public class ToolUtil {
	private Context context;

	public ToolUtil(Context context) {
		this.context = context;
	}

	public List<Map<String, String>> getContactList() {
		List<Map<String, String>> items = new ArrayList<Map<String, String>>();

		Cursor cur = null;
		try {
			// Query using ContentResolver.query or Activity.managedQuery
			cur = this.context.getContentResolver().query(
					ContactsContract.Contacts.CONTENT_URI, null, null, null,
					null);
			if (cur.moveToFirst()) {
				int idColumn = cur
						.getColumnIndex(ContactsContract.Contacts._ID);
				int displayNameColumn = cur
						.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
				// Iterate all users
				do {
					String contactId;
					String displayName;
					String phoneNumber = "";
					// Get the field values
					contactId = cur.getString(idColumn);
					displayName = cur.getString(displayNameColumn);
					// Get number of user's phoneNumbers
					int numberCount = cur
							.getInt(cur
									.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
					if (numberCount > 0) {
						Cursor phones = this.context
								.getContentResolver()
								.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
										null,
										ContactsContract.CommonDataKinds.Phone.CONTACT_ID
												+ " = " + contactId
										/*
										 * + " and " +
										 * ContactsContract.CommonDataKinds
										 * .Phone.TYPE + "=" +
										 * ContactsContract.CommonDataKinds
										 * .Phone.TYPE_MOBILE
										 */, null, null);
						if (phones.moveToFirst()) {
							int numberColumn = phones
									.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
							// Iterate all numbers
							do {
								phoneNumber += phones.getString(numberColumn)
										+ ",";
							} while (phones.moveToNext());
						}
					}
					// Add values to items
					Map<String, String> i = new HashMap<String, String>();
					i.put("name", displayName);
					i.put("key", phoneNumber);
					items.add(i);
				} while (cur.moveToNext());
			} else {
				Map<String, String> i = new HashMap<String, String>();
				i.put("name", "Your Phone");
				i.put("key", "Have No Contacts.");
				items.add(i);
			}
		} finally {
			if (cur != null)
				cur.close();
		}
		return items;
	}

	public String getPeople(String number) {
		String[] projection = { ContactsContract.PhoneLookup.DISPLAY_NAME,
				ContactsContract.CommonDataKinds.Phone.NUMBER };
		// 将自己添加到 msPeers 中
		Cursor cursor = this.context.getContentResolver().query(
				ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
				projection, // Which columns to return.
				ContactsContract.CommonDataKinds.Phone.NUMBER + " = '"
						+ number + "'", // WHERE clause.
				null, // WHERE clause value substitution
				null); // Sort order.
		if (cursor != null) {
			for (int i = 0; i < cursor.getCount(); i++){
				cursor.moveToPosition(i);
				// 取得联系人名字
				int nameFieldColumnIndex = cursor
						.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);
				String name = cursor.getString(nameFieldColumnIndex);// 这里提示
																				// force
																				// close
				return name;
			}
		}
		return "";
		

	}
}

分享到:
评论

相关推荐

    android 联系人模块例子

    在Android平台上,联系人管理是应用开发中常见且重要...通过这个例子,初学者可以快速掌握Android联系人管理的基本操作,并在此基础上进行更复杂的定制和扩展。记得在实际开发中遵循最佳实践,保证用户体验和数据安全。

    android读取系统联系人

    使用ContentResolver的query()方法进行查询,传入联系人URI和所需列。例如,查询所有联系人: ```java Uri contactsUri = ContactsContract.Contacts.CONTENT_URI; Cursor cursor = resolver.query(contactsUri,...

    android 加载本地联系人实现方法

    以上就是Android中加载本地联系人的一种实现方法,可以根据实际需求进行调整和优化,比如增加头像显示、分组显示等高级功能。通过这种方式,开发者能够方便地将用户的联系人信息整合到自己的应用程序中。

    android合并重复联系人功能

    为了解决这个问题,我们可以开发一个"android合并重复联系人功能",这将极大地提升用户体验,使得用户能够高效地管理和整合他们的通讯录。这个功能既可以作为一个独立的应用程序(apk)提供,也可以被集成到系统的...

    Android仿手机查询读取联系人

    ContactsContract类包含了所有与联系人相关的常量和类,它是访问Android联系人数据的核心。 例如,以下代码展示了如何使用ContentResolver查询联系人: ```java ContentResolver resolver = getContentResolver(); ...

    Android通讯录联系人查询,自动提示,一个人多个号码

    本文将深入探讨如何解决在Android中查询和处理联系人姓名重复时遇到的问题,以及如何实现自动提示功能,使得用户能够更方便地添加和查询联系人的多个电话号码。 首先,我们需要理解Android中的联系人存储机制。...

    Android-Android联系人选择器

    在Android应用开发中,"Android-Android联系人选择器"是一个常见的需求,它允许用户从他们的设备联系人列表中选择一个或多个联系人。这个功能广泛应用于消息发送、邀请发送等场景,提升用户体验并简化操作流程。在这...

    Android 联系人列表

    我们通常会通过ContentResolver进行查询,利用`ContactsContract.Contacts`和`ContactsContract.CommonDataKinds.Phone`表来获取联系人的姓名和电话号码。 页面布局是实现联系人列表的第一步。一个基本的布局可能...

    Android联系人4--联系人查询

    综上所述,Android联系人查询涉及到Content Provider、ContentResolver、Cursor等核心概念,而效率优化则是通过合理构建查询、控制数据量、利用异步处理和缓存策略来实现。理解并掌握这些知识点,能帮助开发者高效、...

    android 联系人排序,支持中文 demo

    总结,"android 联系人排序,支持中文 demo"涵盖了Android联系人API的使用、数据排序机制、中文字符处理、自定义排序规则以及性能优化等多个方面,是学习和解决Android中文联系人排序问题的重要参考。通过深入理解...

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

    一、Android联系人管理 Android系统提供了ContentProvider接口来访问和操作联系人数据。主要涉及到以下几个核心类: 1. `ContactsContract`:这是Android系统提供的一个常量类,包含了所有关于联系人数据的URI、...

    android查询手机联系人

    Android 查询手机联系人 Android 操作系统提供了便捷的方式来访问和管理手机联系人信息。在 Android 系统中,联系人信息存储在 ContactsContract.Provider 中,可以通过 ContentResolver 来访问和操作这些信息。 ...

    android 联系人模块

    在Android平台上,联系人模块是应用开发中的一个重要组成部分,它允许用户管理他们的个人联系信息,如姓名、电话号码、电子邮件地址等。对于初学者来说,理解并实现这一功能可以帮助他们更好地掌握Android应用开发的...

    Android 获取系统联系人并发送短信demo

    首先,ContentResolver是Android系统提供的接口,它负责与ContentProvider进行交互,而ContactsContract是Android提供的一个类,包含了所有与联系人相关的常量和URI。 1. **请求权限**:在Android 6.0及以上版本,...

    Pro Android学习:联系人API

    例如,我们可以查询所有联系人,或者根据特定条件(如名字、电话号码等)筛选联系人。查询结果会返回一个Cursor对象,我们可以遍历Cursor获取每条记录。 4. **添加联系人**:添加联系人通常涉及两个步骤:首先,...

    android添加联系人

    2. **构建联系人数据**:创建一个`ContentValues`对象,用来存放联系人的属性,如姓名、电话号码和电子邮件地址等。例如: ```java ContentValues values = new ContentValues(); values.put(ContactsContract....

    Android 系统联系人操作

    这篇博客"Android 系统联系人操作"可能是探讨如何在Android应用中与系统联系人数据库进行交互,包括添加、删除、修改和查询联系人等操作。我们将深入探讨这些关键知识点。 1. **Android权限管理**: 在Android中,...

    android 联系人详解

    Android联系人API概述 Android提供了一个丰富的API,允许开发者通过ContentResolver和ContentProvider与系统的联系人数据进行交互。主要涉及以下组件: - **ContentResolver**:这是应用程序与ContentProvider之间...

    基于android studio的读取联系人并可点击拨打电话

    这个项目,"基于android studio的读取联系人并可点击拨打电话",显然是一个教学或示例项目,它借鉴了郭霖的畅销书《第一行代码》中的方法。下面将详细讲解如何实现这一功能。 首先,我们需要了解Android的权限管理...

    Android获取联系人

    以下是一个简单的示例,展示如何获取所有联系人的姓名和电话号码: ```java ContentResolver resolver = getContentResolver(); Cursor cursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_...

Global site tag (gtag.js) - Google Analytics