获取contact通讯录中的的拼音字段~~~~!!!按照拼音检索~

 
/**
	 * increase pinyin field from phones table
	 * 
	 * @return
	 */
	public boolean load3() {
		mLoading = true;
		boolean bOK = false;
		Cursor managedCursor = null;
		final List<NgnContact> contactsCopy = new ArrayList<NgnContact>();

		if (mOnBeginLoadCallback != null) {
			mOnBeginLoadCallback.callback(this);
		}

		try {
			String phoneNumber, displayName, label;
			String softkey;
			NgnContact contact = null;
			int id, type, photoId;
			final Activity activity = NgnEngine.getInstance().getMainActivity();
			final Resources res = NgnApplication.getContext().getResources();

			if (NgnApplication.getSDKVersion() >= 8 && activity != null) {
				{
					// Uri uri = Uri
					// .parse("content://com.android.contacts/data/phones");
					String[] projection = { "_id", "data1", "data2", "data3",
							"display_name", "photo_id", "contact_id",
							"sort_key" };

					managedCursor = activity.managedQuery(Phone.CONTENT_URI,
							projection, // Which columns to
							// return
							null, // Which rows to return (all rows)
							null, // Selection arguments (none)
							// Put the results in ascending order by
							// name
							"sort_key COLLATE LOCALIZED asc");

					int indexPhoneContactId = managedCursor
							.getColumnIndex(Phone.CONTACT_ID);
					int indexPhoneType = managedCursor
							.getColumnIndex(Phone.TYPE);
					int indexPhoneLabel = managedCursor
							.getColumnIndex(Phone.LABEL);
					int indexPhoneNumber = managedCursor
							.getColumnIndex(Phone.NUMBER);
					int indexPhonePhotoId = managedCursor
							.getColumnIndex(Phone.PHOTO_ID);

					int indexContactDisplayName = managedCursor
							.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);

					// important sentence
					int indexSoftKey = managedCursor.getColumnIndex("sort_key");
					// end
					while (managedCursor.moveToNext()) {
						id = managedCursor.getInt(indexPhoneContactId);
						type = managedCursor.getInt(indexPhoneType);
						label = managedCursor.getString(indexPhoneLabel);
						phoneNumber = managedCursor.getString(indexPhoneNumber);
						photoId = managedCursor.getInt(indexPhonePhotoId);
						softkey = managedCursor.getString(indexSoftKey);

						if (phoneNumber != null) {
							phoneNumber = phoneNumber.replace("-", "");
							if (NgnStringUtils.isNullOrEmpty(label)) {
								final int resId = android.provider.ContactsContract.CommonDataKinds.Phone
										.getTypeLabelResource(type);
								label = res.getString(resId);
							}
							if (contact == null || contact.getId() != id) {
								displayName = managedCursor
										.getString(indexContactDisplayName);
								contact = newContact(id, displayName);
								if (photoId != 0) {
									contact.setPhotoId(photoId);
								}
								// important sentence
								contact.setPinyin(softkey);
								// end

								contactsCopy.add(contact);
							}
							contact.addPhoneNumber(NgnPhoneNumber
									.fromAndroid2LocalType(type), phoneNumber,
									label);
							if (mOnNewPhoneNumberCallback != null) {
								mOnNewPhoneNumberCallback.callback(phoneNumber);
							}
						}
					}

					mLoading = false;
					mReady = true;
					bOK = true;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();

			mLoading = false;
			mReady = false;
		} finally {
			if (managedCursor != null) {
				managedCursor.close();
			}
		}

		if (bOK) {
			synchronized (mContacts) {
				mContacts.clear();
				mContacts.add(contactsCopy);
			}
		}

		if (mOnEndLoadCallback != null) {
			mOnEndLoadCallback.callback(this);
		}

		return bOK;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值