android 搜索通讯录联系人

/**    
* @Title: ContactsUtils.java  
* @Package com.im_cmcc.common.utils
*/
package com.im_cmcc.common.utils;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;

import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.CommonDataKinds.Phone;

import com.im_cmcc.bean.OrgNode;

/**  
 * @ClassName: ContactsUtils  
 * @Description: 手机自带通讯录工具类
 * @author WQ 
 * @date 2014-7-10 上午9:48:54
  
 */
public class ContactsUtils {
	
	/**
	* @Description 根据传入的字符搜索通讯录
	* @Title searchByKeyword
	* @author WQ
	* @date 2014-7-10 上午9:52:53
	* @param word
	* @param context
	* @return
	* @throws FileNotFoundException
	* @throws IOException
	 */
	public static ArrayList<OrgNode> searchByKeyword(String word , Context context) throws FileNotFoundException, IOException{
		
		ArrayList<OrgNode> resultList = new ArrayList<OrgNode>();
		
		Cursor c = context.getContentResolver().query(Data.CONTENT_URI, 
				new String[]{Phone.DISPLAY_NAME,Phone.NUMBER,Phone.SORT_KEY_PRIMARY,Phone.RAW_CONTACT_ID , Phone.PHOTO_THUMBNAIL_URI , Phone.PHOTO_URI},
				Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "' AND " + // 这里限制mineType
				Phone.SORT_KEY_PRIMARY + " like upper('%"+ word +"%')"     
				, null,
				null);

//SORT_KEY_PRIMARY  保存格式为: 假如联系人姓名为 张三  则 值为:ZHANG 张 SAN 三

		while (c.moveToNext()) {
			OrgNode n = new OrgNode();
			n.setType(OrgNode.TYPE_BOOK);
			n.setId(c.getString(3)); // RAW_CONTACT_ID
			n.setName(c.getString(0)); //名称
			n.setText(c.getString(1)); //电话号码
			String thumb = c.getString(4); //PHOTO_THUMBNAIL_URI
			if(null != thumb && !"".equals(thumb)){
				Uri thumbUri = Uri.parse(thumb); 
				n.setThumb(MediaStore.Images.Media.getBitmap(context.getContentResolver(), thumbUri));
			}
			resultList.add(n);
		}
		
		return resultList;
	}
}	


注意 AndroidManifest.xml 需要这个权限

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值