Android获取手机联系人的方法
Android获取系统联系人信息的实例
一、获取手机联系人姓名及手机号
//跳转到系统联系人应用 Intentintent=newIntent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); try{ startActivityForResult(intent,Contacts1RequestCode); }catch(Exceptione){ LogManager.e("打开联系人信息失败"); }
添加权限申请
选择联系人并返回
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ super.onActivityResult(requestCode,resultCode,data); if(Contacts1RequestCode==requestCode){//取联系信息返回 if(resultCode==RESULT_OK){ UricontactData=data.getData(); Cursorcursor=getContentResolver().query(contactData,null, null,null,null); //Key联系人姓名,Value联系人手机号 MapphoneMap=this.getContactPhone(cursor); if(!cursor.isClosed()){ cursor.close(); } if(null!=phoneMap&&!phoneMap.isEmpty()){ Set keySet=phoneMap.keySet(); if(null!=keySet&&!keySet.isEmpty()){ Object[]keys=keySet.toArray(); StringphoneName=(String)keys[0]; StringphoneNo=phoneMap.get(phoneName); } } } } }
/** *获取联系人姓名及手机号 * *@paramcursor *@returnKey为联系人姓名,Value为联系人手机号 */ privateMapgetContactPhone(Cursorcursor){ Map resultMap=newHashMap (); StringphoneName=null;//姓名 StringmobilePhoneNo=null;//手机号 if(null!=cursor){ cursor.moveToFirst(); //获得联系人的ID号 intidFieldIndex=cursor .getColumnIndex(ContactsContract.Contacts._ID); StringcontactId=cursor.getString(idFieldIndex); //联系人姓名 intidphoneNameIndex=cursor .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); phoneName=cursor.getString(idphoneNameIndex); //获得联系人的电话号码的cursor; CursorallPhones=getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"=?", newString[]{contactId},null); //所以联系电话(包话电话和手机号) List allPhoneNumList=newArrayList (); if(allPhones.moveToFirst()){ //遍历所有的电话号码 for(;!allPhones.isAfterLast();allPhones.moveToNext()){ inttelNoTypeIndex=allPhones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE); inttelNoType=allPhones.getInt(telNoTypeIndex); inttelNoIndex=allPhones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); StringtelNo=allPhones.getString(telNoIndex); allPhoneNumList.add(telNo); if(2==telNoType){//手机号(原生态的SDK定义:mobile是2,home是1,work是3,other是7) mobilePhoneNo=telNo; break; } } if(!allPhones.isClosed()){ allPhones.close(); } if(null==mobilePhoneNo){//没有存贮手机号 if(!allPhoneNumList.isEmpty()){//存在其它号码 for(Stringtel:allPhoneNumList){ if(VerifyKit.isLegal(FormatType.MobilePhone,tel)){//取属于手机号格式 mobilePhoneNo=tel; break; } } } } } if(!cursor.isClosed()){ cursor.close(); } resultMap.put(phoneName,mobilePhoneNo); } returnresultMap; }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!