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 "";
		

	}
}

猜你喜欢

转载自rayln.iteye.com/blog/1825373