Android 查询联系人姓名和号码

package com.iban.dao;

import java.util.ArrayList;
import java.util.List;

import com.iban.pojo.User;

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

public class ContactUtil {

	public static void getContact(Context context){
		ContentResolver cr = context.getContentResolver();
        Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);//查询通讯录
        if(cursor.getCount()>0){
            while (cursor.moveToNext()) {
                String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));//联系人id
                String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));//联系人名称
                System.out.println("name:"+name);
                if(cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))>0){
                    //Query phone here.  Covered next 在该处查询电话号码
                	 Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
                             new String[]{id}, null);
                     while (pCur.moveToNext()) {
                         // Do something with phones
                        String phoneNumber = pCur.getString(pCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
                    	 System.out.println("number:"+phoneNumber);
                     } 
                     pCur.close();
                }
            }
        }
	}
	
	
	
	public List<User>  getUsers( Context context){
		        List<User> listUser = new ArrayList<User>();
		        ContentResolver resolver = context.getContentResolver();
		        String phoneNumber = "";
		        // 获得所有的联系人 
		        Cursor cur = resolver.query( 
		                ContactsContract.Contacts.CONTENT_URI,  null,  null,null, 
		                ContactsContract.Contacts.DISPLAY_NAME 
		                        + " COLLATE LOCALIZED ASC"); 
		        // 循环遍历 
		        if (cur.moveToFirst()) { 
		        	User user = new User();
		            int idColumn = cur.getColumnIndex(ContactsContract.Contacts._ID); 
		           
		            int displayNameColumn = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); 
		            do { 
		            	 String contactId = cur.getString(idColumn); 
		            	 System.out.println("contactId:"+contactId);
		                // 获得联系人姓名 
		                String disPlayName = cur.getString(displayNameColumn); 
		                user.setUserName(disPlayName);
		                System.out.println("disPlayName:"+disPlayName);
		                // 查看该联系人有多少个电话号码。如果没有这返回值为0 
		                int phoneCount = cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
		                if (phoneCount > 0) { 
		                    // 获得联系人的电话号码 
		                    Cursor phones = resolver.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
		                            null,  ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
		                                    + " = " + contactId, null, null); 
		                    if (phones.moveToFirst()) { 
		                        do { 
		                            // 遍历所有的电话号码 
		                            int id = phones.getInt(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
		                            phoneNumber = phones 
		                                    .getString(phones 
		                                            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
		                        } while (phones.moveToNext()); 
		                    } 
		                } 
		                System.out.println("phoneNumber:"+phoneNumber);
		                user.setPhoneNumber(phoneNumber);
		           } while (cur.moveToNext()); 
		        }
		        return listUser;
	  }

}

你可能感兴趣的:(Android 查询联系人姓名和号码)