根据联系人号码获取sort_key以实现按字母排序

本文介绍了一种通过联系人电话号码查询联系人详细信息的方法,包括读取联系人姓名及SORT_KEY,利用Android系统提供的ContentResolver及Phone.CONTENT_URI进行数据查询。
摘要由CSDN通过智能技术生成

原理如下,根据联系人号码获得相关联系人的RAW_ID。

		ContentResolver resolver = mContext.getContentResolver();
		// Phone里面的数据
		Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,
				PHONES_PROJECTION, null, null, null);
		if (phoneCursor != null) {
			while (phoneCursor.moveToNext()) {
				// 读取联系人号码
				int phoneNumberIndex = phoneCursor.getColumnIndex(Phone.NUMBER);
				String phoneNumber = phoneCursor.getString(phoneNumberIndex);
				if (TextUtils.isEmpty(phoneNumber))
					continue;
				int contactNameIndex = phoneCursor
						.getColumnIndex(Phone.DISPLAY_NAME);
				String contactName = phoneCursor.getString(contactNameIndex);
				// 根据RAW_ID读取sort_key
				int rawContactIdIndex = phoneCursor
						.getColumnIndex(Phone.CONTACT_ID);
				Long rawContactId = phoneCursor.getLong(rawContactIdIndex);
				String sortKey = getSortKeyString(rawContactId);
			}
			phoneCursor.close();
		}

再根据RAW_ID在raw_contacts表中查询到联系人的sort_key。

	private String getSortKeyString(long rawContactId) {
		String Where = ContactsContract.RawContacts.CONTACT_ID + " ="
				+ rawContactId;
		String[] projection = { "sort_key" };
		Cursor cur = mContext.getContentResolver().query(
				ContactsContract.RawContacts.CONTENT_URI, projection, Where,
				null, null);
		int sortIndex = cur.getColumnIndex("sort_key");
		cur.moveToFirst();
		String sortValue = cur.getString(sortIndex);
		cur.close();
		return sortValue;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值