Android获取电话薄联系人

本文介绍了一个用于从Android设备中读取联系人信息的方法,包括联系人的名字和电话号码,并提供了一个统计联系人总数的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class ContactsTools {

	/**
	 * 获取联系人的名字和电话号码
	 * @param mContext
	 * @return
	 */
	public static List<ContactsUser> getContacts(Context mContext){
		ContactsUser user = null;
		List<ContactsUser> mList = new ArrayList<ContactsUser>();
		int nameIndex=-1;
		ContentResolver resolver = mContext.getContentResolver();
		Cursor cur=resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null,null);
		//得到联系人的总数量
		int count = cur.getCount();
		mContext.getSharedPreferences(AppConfig.SHAREDPREFERCE, Context.MODE_PRIVATE).edit().putInt(AppConfig.CONTACTSCOUNT, count).commit();
		while (cur.moveToNext()) {
			user = new ContactsUser();
			String name = "";
			String number = "";
			//得到名字
			nameIndex = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
			name = cur.getString(nameIndex);
			
			//得到电话号码
			String contactId = cur.getString(cur 

			        .getColumnIndex(ContactsContract.Contacts._ID)); // 获取联系人的ID号,在SQLite中的数据库ID  

			        Cursor phone = resolver.query(  

			        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,  

			        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "  

			        + contactId, null, null);  

			   while (phone.moveToNext()) {  

			   String strPhoneNumber = phone.getString( 

			                           phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); // 手机号码字段联系人可能不止一个  
			   //如果电话号码前有带+86的,去掉+86
			   if(strPhoneNumber.startsWith("+86")){
//					Log.i("simple", "带86的="+number.substring(3,number.length()-1));
					strPhoneNumber = strPhoneNumber.substring(3);
				}
			   strPhoneNumber = strPhoneNumber.replace(" ", "");
			   number += strPhoneNumber+"_";  
			   }  
			   if(phone != null){
				   phone.close();
			   }
			   number = number.substring(0,number.length()-1);
			   String nameAndNumber = name + ":" +number;
			   user.setName(name);
			   user.setNumber(number);
			   mList.add(user);
		}
		if(cur != null){
			cur.close();
		}
		return mList;
	}
	
	/**
	 * 获得联系人的总数
	 */
	public static int getContactsCount(Context context){
		ContentResolver resolver = context.getContentResolver();
		Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
		return cursor.getCount();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值