iOS调用系统通讯录获取姓名电话号码(转)

本文介绍了如何在iOS应用中使用Address Book框架来访问设备上的联系人信息,包括姓名和电话号码。通过实现ABPeoplePickerNavigationControllerDelegate协议的方法,可以获取用户选择的联系人详情,并将其展示在应用内。

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

原文地址:http://blog.youkuaiyun.com/idoshi201109/article/details/46007125

OS调用系统通讯录获取姓名电话号码

(iOS 8.0 Xcode6.3可以使用)

1、导入头文件。

 

#import <AddressBook/AddressBook.h>

#import <AddressBookUI/AddressBookUI.h>

2、添加协议

@interface NewAddressViewController ()<ABPeoplePickerNavigationControllerDelegate>

3、实例化

 

ABPeoplePickerNavigationController * vc = [[ABPeoplePickerNavigationController alloc] init];

            vc.peoplePickerDelegate = self;

            [self presentViewController:vc animated:YES completion:nil];

 

4、实现协议方法

 

#pragma mark - ABPeoplePicker delegate

 

-(void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier{

    //获取联系人的电话 引用属性

    ABMutableMultiValueRef valuesRef=ABRecordCopyValue(person, kABPersonPhoneProperty);

    //获取选中的 标识符 在联系人中的 索引

    CFIndex index=ABMultiValueGetIndexForIdentifier(valuesRef, identifier);

    

    //读取电话号码

    CFStringRef telValue=ABMultiValueCopyValueAtIndex(valuesRef, index);

    

    //获取姓名

    CFStringRef FullName=ABRecordCopyCompositeName(person);

    

    //添加到数组中

    NSDictionary *dict=@{@"name":(__bridge NSString *)FullName,@"phone":(__bridge NSString *)telValue};

    [arrayData addObject:dict];

    [Mytableview reloadData];

    

}

-(void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker{

    [self dismissViewControllerAnimated:YES completion:^{

        [Mytableview reloadData];

    }];

}

 

// 8.0之前才会调用

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker

      shouldContinueAfterSelectingPerson:(ABRecordRef)person {

 

    return YES;

}

#pragma ios8之前调用

-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier{

    

    //获取联系人的电话 引用属性

    ABMutableMultiValueRef valuesRef=ABRecordCopyValue(person, kABPersonPhoneProperty);

    //获取选中的 标识符 在联系人中的 索引

    CFIndex index=ABMultiValueGetIndexForIdentifier(valuesRef, identifier);

    

    //读取电话号码

    CFStringRef telValue=ABMultiValueCopyValueAtIndex(valuesRef, index);

    

    //获取姓名

    CFStringRef FullName=ABRecordCopyCompositeName(person);

    

    

    //添加到数组中

    NSDictionary *dict=@{@"name":(__bridge NSString *)FullName,@"phone":(__bridge NSString *)telValue};

    [arrayData addObject:dict];

    [Mytableview reloadData];

    

    [self dismissViewControllerAnimated:YES completion:nil];

    return false; //返回yes 会拨打电话,no 不会拨打电话

}

 

转载于:https://www.cnblogs.com/niit-soft-518/p/4734351.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值