Android(安卓)选择联系人+返回对应手机号码
16lz
2021-01-26
在我开发的每日短信程序中,有一个这样的功能,就是点击‘选择联系人’按钮,会出现联系人选择界面,点击选择联系人后,会将这个联系人的手机号码加入一个文本框中。关于这个程序介绍和界面可以参看: 我的第一个Android程序
关于选择联系人,可以直接使用Android的内置联系人实现,网上也有些例子,但是有些代码有点问题,有的在模拟器正常,手机上不行,有的手机OK,模拟器不行。原因是在联系人URI使用了硬编码,你可以使用ContactsContract.Contacts.CONTENT_URI常量来增强移植性。
选择联系人部分代码如下:
Java代码
接下来就是获取选择联系人的手机号码,首先需要通过函数onActivityResult获取选择的联系人,然后通过Content Provider查询联系人的手机号码,代码片段如下:
Java代码
关于选择联系人,可以直接使用Android的内置联系人实现,网上也有些例子,但是有些代码有点问题,有的在模拟器正常,手机上不行,有的手机OK,模拟器不行。原因是在联系人URI使用了硬编码,你可以使用ContactsContract.Contacts.CONTENT_URI常量来增强移植性。
选择联系人部分代码如下:
Java代码
- mChooseContactButton.setOnClickListener(newButton.OnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- Intentintent=newIntent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
- SMSSendActivity.this.startActivityForResult(intent,1);
- }
- });
接下来就是获取选择联系人的手机号码,首先需要通过函数onActivityResult获取选择的联系人,然后通过Content Provider查询联系人的手机号码,代码片段如下:
Java代码
- @Override
- protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
- //TODOAuto-generatedmethodstub
- super.onActivityResult(requestCode,resultCode,data);
- switch(requestCode)
- {
- case(1):
- {
- if(resultCode==Activity.RESULT_OK)
- {
- UricontactData=data.getData();
- Cursorc=managedQuery(contactData,null,null,null,null);
- c.moveToFirst();
- StringphoneNum=this.getContactPhone(c);
- mPhoneNum.setText(phoneNum);
- }
- break;
- }
- }
- }
- //获取联系人电话
- privateStringgetContactPhone(Cursorcursor)
- {
- intphoneColumn=cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);
- intphoneNum=cursor.getInt(phoneColumn);
- StringphoneResult="";
- //System.out.print(phoneNum);
- if(phoneNum>0)
- {
- //获得联系人的ID号
- intidColumn=cursor.getColumnIndex(ContactsContract.Contacts._ID);
- StringcontactId=cursor.getString(idColumn);
- //获得联系人的电话号码的cursor;
- Cursorphones=getContentResolver().query(
- ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
- null,
- ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"="+contactId,
- null,null);
- //intphoneCount=phones.getCount();
- //allPhoneNum=newArrayList<String>(phoneCount);
- if(phones.moveToFirst())
- {
- //遍历所有的电话号码
- for(;!phones.isAfterLast();phones.moveToNext())
- {
- intindex=phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
- inttypeindex=phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE);
- intphone_type=phones.getInt(typeindex);
- StringphoneNumber=phones.getString(index);
- switch(phone_type)
- {
- case2:
- phoneResult=phoneNumber;
- break;
- }
- //allPhoneNum.add(phoneNumber);
- }
- if(!phones.isClosed())
- {
- phones.close();
- }
- }
- }
- returnphoneResult;
- }
这样,就可以实现通过选择联系人来获取它的手机号码了,代码是我从我程序代码直接拷贝的,需要做部分修改,但是绝对可用。
转载自:http://renzhen.iteye.com/blog/1175035
更多相关文章
- 浅析Android中强大的Dialog
- Android应用程序权限机制的源代码分析(1)
- 利用WCF与Android实现图片上传并传参
- android官方最新以及2.2、2.3.5源代码(完整)下载以及用source insi
- 在eclipse中导入android4.0中的Launcher2并且编译运行
- Android用户界面设计学习之旅-第二站
- android,代码混淆,反编译,ADT 20版本
- android Canvas中的clipRect、drawBitmap
- AndroidActivity跳转动画,让你的APP瞬间绚丽起来