android 调用通讯录选取联系人

本文介绍了一个简单的Android应用功能,用于从设备中选择联系人及其电话号码。通过使用ACTION_PICK操作和ContactsContract API,文章详细展示了如何启动联系人选项界面、获取所选联系人的信息并显示在应用界面上。

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

	public void pickContact(View v) {
//		如果是需要读取联系人信息,传入的URI为:ContactsContract.Contacts.CONTENT_URI;
//		如果是需要读取手机号码信息传入的URI为:ContactsContract.CommonDataKinds.Phone.CONTENT_URI
		Intent intent = new Intent(Intent.ACTION_PICK,
				ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
		ActivityUtils.startActivityForResult(this, intent,
				Request_Code_PickContact);
	}


@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (resultCode != RESULT_OK) {
			return;
		}
		switch (requestCode) {
		case Request_Code_PickContact:
			Uri contactData = data.getData();
			String[] contact = this.getContactPhone(contactData);
			clientName.setText(contact[0]);
			phone.setText(contact[1]);
			break;

		default:
			break;
		}
		super.onActivityResult(requestCode, resultCode, data);
	}

/**
	 * 从表中取出联系人和手机号
	 * 
	 * @param cursor
	 * @return
	 */
	private String[] getContactPhone(Uri result) {
		printLog(ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
		printLog(result);
		String ColumnName = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME;
		String Columnphone = ContactsContract.CommonDataKinds.Phone.NUMBER;
		Cursor cursor = getContentResolver().query(result, null, null, null,
				null);
		cursor.moveToFirst();
		int columnNameIndex = cursor.getColumnIndex(ColumnName);
		int columnPhoneIndex = cursor.getColumnIndex(Columnphone);
		printLog("cursor.getColumnCount():" + cursor.getColumnCount()); // 77 不同的手机不一样
		printLog("columnNameIndex:" + columnNameIndex); // 40
		printLog("columnPhoneIndex:" + columnPhoneIndex); // 27
		String[] res = new String[2];
		if (columnNameIndex > 0 && columnNameIndex < cursor.getColumnCount()) {
			String stringName = cursor.getString(columnNameIndex);
			res[0] = stringName;
		}
		if (columnPhoneIndex > 0 && columnPhoneIndex < cursor.getColumnCount()) {
			String stringPhone = cursor.getString(columnPhoneIndex);
			res[1] = stringPhone;
		}
		if (!cursor.isClosed()) {
			cursor.close();
		}
		return res;

	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值