ios开发中直接选择一个联系人的电话号码和姓名
来源:互联网 发布:kk聊天软件 编辑:程序博客网 时间:2024/05/16 23:56
1、在AppDelegate中添加授权提示
- (void)requestAuthorizationAddressBook { // 判断是否授权 ABAuthorizationStatus authorizationStatus = ABAddressBookGetAuthorizationStatus(); if (authorizationStatus == kABAuthorizationStatusNotDetermined) { // 请求授权 ABAddressBookRef addressBookRef = ABAddressBookCreate(); ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) { if (granted) { // 授权成功 } else { // 授权失败 NSLog(@"授权失败!"); } }); }}
2、导入头文件和协议
#import <AddressBookUI/ABPeoplePickerNavigationController.h>
#import <AddressBook/ABPerson.h>
#import <AddressBookUI/ABPersonViewController.h>
<ABPeoplePickerNavigationControllerDelegate>
3、访问并获取手机号和姓名
- (void)getAddressBookClick{ // 1. 判读授权 ABAuthorizationStatus authorizationStatus = ABAddressBookGetAuthorizationStatus(); if (authorizationStatus != kABAuthorizationStatusAuthorized) { UIAlertView * alart = [[UIAlertView alloc]initWithTitle:@"温馨提示" message:@"请您设置允许APP访问您的通讯录\n设置-隐私-通讯录" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alart show]; return; } ABPeoplePickerNavigationController *nav = [[ABPeoplePickerNavigationController alloc] init]; nav.peoplePickerDelegate = self; if([[UIDevice currentDevice].systemVersion floatValue]>=8.0){ nav.predicateForSelectionOfPerson = [NSPredicate predicateWithValue:false]; } [self presentViewController:nav animated:YES completion:nil];}//取消选择- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker{ [peoplePicker dismissViewControllerAnimated:YES completion:nil];}- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier { ABMultiValueRef phone = ABRecordCopyValue(person, kABPersonPhoneProperty); long index = ABMultiValueGetIndexForIdentifier(phone,identifier); NSString *phoneNO = (__bridge NSString *)ABMultiValueCopyValueAtIndex(phone, index); if ([phoneNO hasPrefix:@"+"]) { phoneNO = [phoneNO substringFromIndex:3]; } phoneNO = [phoneNO stringByReplacingOccurrencesOfString:@"-" withString:@""]; [peoplePicker dismissViewControllerAnimated:YES completion:nil]; NSString *firstName=(__bridge NSString *)(ABRecordCopyValue(person, kABPersonFirstNameProperty)); NSString *lastName=(__bridge NSString *)(ABRecordCopyValue(person, kABPersonLastNameProperty)); NSString *allName; if ([CommandHelp checkStringIsNull:lastName] && [CommandHelp checkStringIsNull:firstName]) { allName = [NSString stringWithFormat:@"%@%@",lastName,firstName]; }else if([CommandHelp checkStringIsNull:firstName]){ allName = firstName; }else if ([CommandHelp checkStringIsNull:lastName]){ allName = lastName; } if (phone && [CommandHelp checkStringIsNull:phoneNO]) { NSLog(@"====name:%@ phoneNumber:%@",allName,phoneNO); // [self.tableView reloadData]; [peoplePicker dismissViewControllerAnimated:YES completion:nil]; return; }}- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person{ ABPersonViewController *personViewController = [[ABPersonViewController alloc] init]; personViewController.displayedPerson = person; [peoplePicker pushViewController:personViewController animated:YES];}
0 0
- ios开发中直接选择一个联系人的电话号码和姓名
- Android中 根据电话号码获取联系人姓名
- 根据电话号码查找通讯录中联系人姓名
- Android中根据电话号码取联系人姓名
- android手机获取联系人姓名和电话号码
- 获得联系人姓名、电话号码的方法
- 根据姓名获取联系人的电话号码
- Android读取联系人的姓名及电话号码
- iOS开发获取手机通讯录中的电话号码和姓名
- iOS开发获取手机通讯录中的电话号码和姓名
- 根据电话号码获取联系人姓名
- 电话号码转化为联系人姓名
- 如何读取系统联系人姓名和电话号码(1)
- 最简单ListView显示联系人姓名和电话号码
- android2.2根据电话号码查询联系人姓名的方法
- android2.2根据电话号码查询联系人姓名的方法
- 获取联系人的姓名和联系方式,并放到editText中
- android 通过电话号码来获取联系人姓名
- Python Module和Package辨析
- Linux下ffmpeg的卸载与安装
- 矩阵法求第n个斐波拉契数
- 高德地图 toolbar
- 万能的林萧说:一篇文章教会你,如何做到招聘要求中的“要有扎实的Java基础”。
- ios开发中直接选择一个联系人的电话号码和姓名
- 机器学习实战_决策树
- 1.vue.js实例:展现helloWord的方式
- MySql安装与使用图文教程5.7
- Android自定义View绘制几何图形
- 关于C的小程序-4
- kettle实战应用
- nginx+lua+kafka实现日志统一收集汇总
- 安装Alcatraz插件管理器