`
renzhen
  • 浏览: 251570 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android 选择联系人+返回对应手机号码

阅读更多
   在我开发的每日短信程序中,有一个这样的功能,就是点击‘选择联系人’按钮,会出现联系人选择界面,点击选择联系人后,会将这个联系人的手机号码加入一个文本框中。关于这个程序介绍和界面可以参看:我的第一个Android程序
   关于选择联系人,可以直接使用Android的内置联系人实现,网上也有些例子,但是有些代码有点问题,有的在模拟器正常,手机上不行,有的手机OK,模拟器不行。原因是在联系人URI使用了硬编码,你可以使用ContactsContract.Contacts.CONTENT_URI常量来增强移植性。
   选择联系人部分代码如下:
mChooseContactButton.setOnClickListener(new Button.OnClickListener(){

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);

		SMSSendActivity.this.startActivityForResult(intent, 1);
	}
	
});

    接下来就是获取选择联系人的手机号码,首先需要通过函数onActivityResult获取选择的联系人,然后通过Content Provider查询联系人的手机号码,代码片段如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	// TODO Auto-generated method stub
	super.onActivityResult(requestCode, resultCode, data);
	switch(requestCode)
	{

		case (1) :
		{

		if (resultCode == Activity.RESULT_OK)
		{

		Uri contactData = data.getData();

		Cursor c = managedQuery(contactData, null, null, null, null);

		c.moveToFirst();

		String phoneNum=this.getContactPhone(c);
		mPhoneNum.setText(phoneNum);
		
		}
		
		break;
		
		}

	}

	
	
	
}


//获取联系人电话
private String getContactPhone(Cursor cursor)
{

	int phoneColumn = cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);  
	int phoneNum = cursor.getInt(phoneColumn); 
	String phoneResult="";
	//System.out.print(phoneNum);
	if (phoneNum > 0)
	{
	// 获得联系人的ID号
		int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);
		String contactId = cursor.getString(idColumn);
			// 获得联系人的电话号码的cursor;
			Cursor phones = getContentResolver().query(
			ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
			null,
			ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = " + contactId, 
			null, null);
			//int phoneCount = phones.getCount();
			//allPhoneNum = new ArrayList<String>(phoneCount);
			if (phones.moveToFirst())
			{
					// 遍历所有的电话号码
					for (;!phones.isAfterLast();phones.moveToNext())
					{                                            
						int index = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
						int typeindex = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE);
						int phone_type = phones.getInt(typeindex);
						String phoneNumber = phones.getString(index);
						switch(phone_type)
						{
							case 2:
								phoneResult=phoneNumber;
							break;
						}
						   //allPhoneNum.add(phoneNumber);
					}
					if (!phones.isClosed())
					{
						   phones.close();
					}
			}
	}
	return phoneResult;
}

   这样,就可以实现通过选择联系人来获取它的手机号码了,代码是我从我程序代码直接拷贝的,需要做部分修改,但是绝对可用。
0
0
分享到:
评论

相关推荐

    android 联系人模块

    在Android平台上,联系人模块是应用开发中的一个重要组成部分,它允许用户管理他们的个人联系信息,如姓名、电话号码、电子邮件地址等。对于初学者来说,理解并实现这一功能可以帮助他们更好地掌握Android应用开发的...

    android 联系人 SIM卡 最近联系人 通讯录 获取源代码

    一、Android联系人管理 Android系统提供了ContentProvider接口来访问和操作联系人数据。主要涉及到以下几个核心类: 1. `ContactsContract`:这是Android系统提供的一个常量类,包含了所有关于联系人数据的URI、...

    Android 联系人列表

    在Android开发中,构建一个联系人列表是常见的需求,它涉及到UI设计、数据获取和处理等多个方面。本篇文章将深入探讨如何实现一个“Android电话联系人页面布局”以及相关的代码实现。 首先,我们需要理解Android的...

    android手机联系人,字母索引列表,实现联动

    本项目实现了“android手机联系人,字母索引列表,实现联动”的功能,涉及了多个关键知识点,包括自定义View、ListView数据绑定、本地联系人API的使用以及Android 6.0权限适配。 首先,我们来详细讲解自定义View...

    Android联系人 增删改 的简单Demo

    一、Android联系人API概述 Android系统使用Content Provider机制来管理包括联系人在内的各种数据。联系人数据存储在Contacts Provider中,开发者可以通过ContentResolver接口与ContentProvider进行交互,执行增、删...

    android快速滑动列表+首字母提示(改进版)

    `getPositionForSection(int section)`返回对应于指定首字母的第一个列表项位置;`getSectionForPosition(int position)`则返回给定位置的列表项对应的首字母。 为了生成首字母提示,我们可以对列表数据进行预处理...

    Android Studio拨号界面.rar

    这样会打开一个选择联系人的界面,用户选择后,可以通过重写onActivityResult()处理返回的结果。 3. **跳转到短信界面:** 发送短信则需要ACTION_SENDTO action,同时指定sms/to URI: ```java Intent intent =...

    Android 一个批量删除联系人的Demo.rar

    在Android应用开发中,批量删除联系人是一项常见的功能,尤其对于管理大量联系信息的应用来说更是必不可少。本示例代码——"Android 一个批量删除联系人的Demo"提供了一个实用的参考,帮助开发者理解如何在Android...

    android获取单个通讯录联系人信息并分享内容(短信邀请)

    在Android应用开发中,获取单个通讯录联系人信息并分享内容,如短信邀请,是一项常见的功能需求。这个过程涉及到Android系统的权限管理、联系人数据的读取以及内容分享等核心知识点。以下将详细讲解这些内容。 首先...

    Android短信联系人备份并上传

    在Android开发中,有时我们需要对用户的短信、联系人和通话记录等重要数据进行备份,以防止数据丢失。本文将深入探讨如何实现这个功能,并讲解如何将备份的数据上传到JavaWeb服务器。 首先,我们要关注的是“短信和...

    Android中使用Content Provider组件访问通讯录中的联系人和添加联系人案例详解

    添加联系人时,通常需要先创建一个`ContentValues`对象,填充联系人的属性,如姓名、电话号码等,然后调用`ContentResolver`的`insert()`方法,传入`ContactsContract.RawContacts.CONTENT_URI`和`ContentValues`...

    Android学习之手机通讯录

    本项目“Android学习之手机通讯录”聚焦于使用ContentProvider操作手机内置的通讯录,包括查询、添加和删除联系人。尽管删除功能存在不足,但这个练习仍能帮助我们深入理解ContentProvider的工作原理。 首先,我们...

    安卓通讯录联系人打电话归属地相关-Android手机的通讯录联系人信息.zip

    这个压缩包文件"安卓通讯录联系人打电话归属地相关-Android手机的通讯录联系人信息.zip"包含了一些源码和可能的文档,用于帮助开发者理解和实现这类功能。 1. **数据存储**:Android中的通讯录数据通常存储在SQLite...

    android多个联系人保存到通讯录

    在Android开发中,将多个联系人保存到通讯录是一个常见的需求。这通常涉及到对系统联系人API的使用,包括读取、创建和更新联系人信息。以下是对这一主题的详细阐述: 1. **Android权限管理**: 在Android中,访问...

    IOS通讯录联系人选择首字母T9拼音号码搜索排序实现

    学了也一直没用上,最近刚好公司有个IOS项目中需要弄个通过点击按钮 选择手机通讯录中联系人··返回号码的功能。由于团队人员分配不过来,于是这个任务落到了我这。花了一天时间搞定。大部分时间花在了排序上,主要...

    获取android手机信息

    2. **手机版本**:Android系统的版本信息可以通过`Build.VERSION`类获取,如`Build.VERSION.RELEASE`返回当前的Android版本字符串,`Build.VERSION.SDK_INT`返回对应的SDK整数值。 3. **系统版本**:这通常指的是...

    android仿手机通讯录效果

    这通常会返回一个`Cursor`对象,我们可以遍历这个`Cursor`,获取每个联系人的ID、名字、电话号码等信息。 2. **首字母排序**: 接下来,我们需要根据联系人姓名的首字母进行排序。这里可以创建一个辅助类,如`...

    Android跳转到通讯录获取用户名称和手机号码的实现思路

    总结来说,Android应用通过Intent和ContentResolver可以实现跳转到通讯录并获取用户选择的联系人的姓名和电话号码。需要注意的是,必须获得用户的权限许可才能访问这些敏感信息。在实际开发中,应确保遵守隐私政策,...

    仿手机联系人列表

    在Android开发中,构建一个类似手机联系人列表的界面是一项常见的任务。这个“仿手机联系人列表”的项目,主要展示了如何使用ListView组件实现A-Z字母排序功能,为用户提供方便快捷的查找体验。以下是对这个项目的...

    Android源码——ViewPager+Fragment实现QQ界面.zip

    PagerAdapter会根据需要加载并返回对应的Fragment实例。通常,我们需要重写`getCount()`方法来确定ViewPager有多少个页面,以及`instantiateItem(ViewGroup container, int position)`和`destroyItem(ViewGroup ...

Global site tag (gtag.js) - Google Analytics