获取手机通讯录里的电话号码

系统 1589 0


获取iPhone用户手机号

使用下面的函数可以返回用户的手机号: extern NSString *CTSettingCopyMyPhoneNumber(); 然后调用即可。 由于这个函数是包含在CoreTelephony中,所以只能用于非官方iPhone SDK。

使用下面的函数可以返回用户的手机号:

extern NSString *CTSettingCopyMyPhoneNumber();

然后调用即可。

由于这个函数是包含在CoreTelephony中,所以只能用于非官方iPhone SDK。


为了调用系统的通讯录界面与相应功能,需要引入AddressBook.framework与AddressBookUI.framework,同时,在源文件中需要包含同文件<AddressBook/AddressBook.h>,<AddressBookUI/AddressBookUI.h>.

首先申明变量:

ABPeoplePickerNavigationController * picker ;

在需要的地方调用显示选择联系人界面,同时设置ABPeoplePickerNavigationControllerDelegate委托:

if (! picker ){

picker = [[ ABPeoplePickerNavigationController alloc ] init ];

// place the delegate of the picker to the controll

picker . peoplePickerDelegate = self ;

}

// showing the picker

[ self presentModalViewController : picker animated : YES ];


选择联系人界面如下图所示:

- ( BOOL )peoplePickerNavigationController: ( ABPeoplePickerNavigationController *)peoplePicker

shouldContinueAfterSelectingPerson:( ABRecordRef )person

{

return YES ;

}

该方法在用户选择通讯录一级列表的某一项时被调用,通过person可以获得选中联系人的所有信息,但当选中的联系人有多个号码,而我们又希望用户可以明确的指定一个号码时(如拨打电话),返回YES允许通讯录进入联系人详情界面:


当用户点击某个字段时,会调用如下方法:

- ( BOOL )peoplePickerNavigationController: ( ABPeoplePickerNavigationController *)peoplePicker

shouldContinueAfterSelectingPerson:( ABRecordRef )person

property:( ABPropertyID )property

identifier:( ABMultiValueIdentifier )identifier

{

if (property == kABPersonPhoneProperty ) {

ABMutableMultiValueRef phoneMulti = ABRecordCopyValue (person, property);

int index = ABMultiValueGetIndexForIdentifier (phoneMulti,identifier);

NSString *phone = ( NSString *) ABMultiValueCopyValueAtIndex (phoneMulti, index);

//do something

[phone release ];

[peoplePicker dismissModalViewControllerAnimated : YES ];

}


return NO ;


}

联系人信息中可能有很多字段,首先需要判断选择的是否为电话号码字段.当满足要求时,获取联系人信息,通过标识符获得用户选择的号码在该联系人号码列表中的索引,最后通过索引获得选中的电话号码.


最后还需要实现如下方法使得用户在点击"取消"按钮时关闭联系人选择界面:

- ( void )peoplePickerNavigationControllerDidCancel:( ABPeoplePickerNavigationController *)peoplePicker

{

// assigning control back to the main controller

[ picker dismissModalViewControllerAnimated : YES ];

iPhone获取通讯录里电话号码

2 | 字号 订阅

ABAddressBookRef addressBook = ABAddressBookCreate();
peopleArray = (NSMutableArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);
for (id *people in peopleArray)
{
ABMultiValueRef phones = (ABMultiValueRef) ABRecordCopyValue(people, kABPersonPhoneProperty);
int nCount = ABMultiValueGetCount(phones);
for(int i = 0 ;i < nCount;i++)
{
NSString *phonelLable = (NSString *)ABMultiValueCopyLabelAtIndex(phones, i);
NSString *phoneNO = (NSString *)ABMultiValueCopyValueAtIndex(phones, i); // 这个就是电话号码
}
}


获取手机通讯录里的电话号码


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论