iOS调用系统通讯录获取姓名电话号码(转)
原文地址:http://blog.csdn.net/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 不会拨打电话
}
iOS调用系统通讯录获取姓名电话号码(转)的更多相关文章
- iOS开发--系统通讯录的访问与添加联系人
公司项目有访问通讯录的需求,所以开始了探索之路.从开始的一无所知,到知识的渐渐清晰.这一切要感谢广大无私分享的 “coder”,注:我是尊称的语气! 苹果提供了访问系统通讯录的框架,以便开发者对系统通 ...
- ios调用系统相册、相机 显示中文标题、本地化多语言支持
因为调用系统相册.相机需要显示中文,所以搞了半天才知道是在Project->info->Custom ios Target Properties 添加 Localizations 并加入C ...
- iOS - (调用系统本机发送短信功能)
今天处理一个订单详情的界面,在订单详情页面上有联系方式(电话号码),在电话号码的右边有两图片,一个是电话样式的,一个是短信样式的,做为一名程序员(号称攻城师)一眼看下去就应该是一个 button,而不 ...
- ios调用系统界面显示英文
调用系统相册界面 UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.sourceType ...
- iOS调用系统相册、相机 显示中文标题
解决手机语言已经设置显示中文 在调用系统相册.相机界面 时显示英文问题, 在 info.plist里面添加Localized resources can be mixed YES 表 ...
- ios 调用系统应用的方法 应用间跳转的方法
声明一个私有方法: #pragma mark - 私有方法 -(void)openUrl:(NSString *)urlStr{ //注意url中包含协议名称,iOS根据协议确定调用哪个应用,例如发送 ...
- iOS 调用系统相册 相机 时,显示中文标题
解决手机语言已经设置显示中文 在调用系统相册.相机界面 时显示英文问题, 在 info.plist里面添加Localized resources can be mixed YES 表示是否允许应用程序 ...
- ios 调用系统发短信以及打电话功能
先介绍一种最简单的方法: 调用打电话功能 [[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"tel://100 ...
- iOS 调用系统拍照遇到的坑
iOS 11之前用的一套图片选择器框架,之前一直没问题,iOS11之后拍照后回调失败......,打断点方法完全执行,也能回调成功:但是去掉断点又恢复不能会调的问题.困扰了一下午,愣是没有解决.后来把 ...
随机推荐
- C#中配置文件的使用
1. 向项目添加app.config文件: 右击项目名称,选择“添加”→“添加新建项”,在出现的“添加新项”对话框中,选择“添加应用程序配置文件”:如果项目以前没有配置文件,则默认的文件名称为“app ...
- Wince6 RIL层移植
RIL移植: 因为不同的模组,支持的AT命令有所不同,或是格式不一样,还有就是返回不一样,我们有必要对不同的模组进行RIL驱动移植. 在Response.cpp,Msg.cpp等 文件中ParseXX ...
- php 生成类的对象 $a=new test();
程序 <?php class test { ... } $a=new test(); 1.BNF 范式 start: variable '=' expr ';' expr: new_expr ; ...
- BZOJ2893: 征服王
题解: 裸的上下界最小流是有问题的.因为在添加了附加源之后求出来的流,因为s,t以及其它点地位都是平等的.如果有一个流经过了s和t,那么总可以认为这个流是从s出发到t的满足题意的流. 既然可能存在s到 ...
- 关于 tomcat 集群中 session 共享的三种方法
前两种均需要使用 memcached 或redis 存储 session ,最后一种使用 terracotta 服务器共享. 建议使用 redis,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单 ...
- 【转】如何把ndk编译出来的可执行文件伪装成so打包到apk中
原文网址:http://jeyechao.iteye.com/blog/2164286 ndk编译出来的共享库,eclipse会自动打包到apk中,而编译出来的可执行文件则不会. 要想可执行文件自动被 ...
- JPA简单知识
,JPA(Java Persistence API):通过注解或XML描述对象--关系表的映射关系,并将运行期的实体对象持久化到数据库中. JPA是一套规范,不是某个ORM产品,它主要包括以下3方面的 ...
- 自定义SharePoint列表新增、编辑、查看页面(NewForm、EditForm、DispForm)
转:http://blog.csdn.net/lance_lot1/article/details/7966571 在项目中,用户需求涉及在一个列表录入项目信息,选择一个项目后,与该项目相关的信息实现 ...
- toastr
$(function(){ //参数设置,若用默认值可以省略以下面代 toastr.options = { "closeButton": false ...
- CentOS 7 nfs客户端挂载问题
配置nfs服务器时,服务器端挂载没有问题,但是客户端挂载时提示:mount.nfs: Connection timed out 解决方法1: 关闭firewalld # systemctl stop ...