IOS开发 获取手机通讯录

//导入头文件

#import <AddressBook/AddressBook.h>


//获取权限

-(void)adaddress{

    

    //判断是否授权成功

    if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {

        //授权成功后直接返回

        return;

    }

    

    ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);

    

    //请求用户授权

    //第一个参数接收通讯录

    //第二个参数是一个block,无论授权成功 还是失败都会调用

    ABAddressBookRequestAccessWithCompletion(book, ^(bool granted, CFErrorRef error) {

        //granted YES 代表用户授权成功  NO代表用户授权失败

        

        if (granted) {

            NSLog(@"授权成功");

        }else{

            NSLog(@"授权失败");

        }

        

    });

    

}


-(void)buttonClick:(UIButton *)but{

    

    //判断是否授权成功

    if (ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusAuthorized) {

        //授权失败直接返回

        NSLog(@"授权失败");

        return;

    }

    //创建通讯录对象

    ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);

    

    //在通讯录中取得所有联系人;

    CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(book);

    CFIndex count = CFArrayGetCount(allPeople);

    

    //打印每一个联系人的额外信息

    for (int i = 0; i < count; i++) {

        

        PhoneModel *model = [[PhoneModel alloc] init];


        

        //联系人列表中的每一个人都是一个ABrecorRef

        ABRecordRef peopleInform = CFArrayGetValueAtIndex(allPeople, i);


        //获取联系人的电话

        //从联系人中获取到的电话是所有的电话

        ABMultiValueRef phones = ABRecordCopyValue(peopleInform, kABPersonPhoneProperty);

        //获取当前联系人总共有多少种电话

        CFIndex phoneCount = ABMultiValueGetCount(phones);

        for (int i  = 0; i < phoneCount; i ++) {


            //电话类型

            CFStringRef name = ABMultiValueCopyLabelAtIndex(phones, i);

            

            NSString *strName = [NSString stringWithFormat:@"%@",name];

            //打印电话类型

            NSLog(@"%@",strName);

            

            //用户存取手机号的时候分成好几种 这里只取 一种

            if ([strName isEqualToString:@"_$!<Mobile>!$_"]) {

               

                model.Mobile = [NSString stringWithFormat:@"%@",name];

                

    

                //从所有的电话中 取出指定的电话

                CFStringRef value = ABMultiValueCopyValueAtIndex(phones, i);

                

                model.phoneTEL = [NSString stringWithFormat:@"%@",value];

                

                


                

                //取出当前联系人的电话信息

                //获取联系人的姓名

                CFStringRef lastName = ABRecordCopyValue(peopleInform, kABPersonLastNameProperty);

                CFStringRef firstName = ABRecordCopyValue(peopleInform, kABPersonFirstNameProperty);

                

//把姓名拼接好

                if (firstName == nil && lastName != nil) {

                    

                    model.name = [NSString stringWithFormat:@"%@",lastName];

                    

                }else if (firstName == nil && lastName != nil){

                    

                    model.name = [NSString stringWithFormat:@"%@",firstName];

                    

                }else if (lastName != nil && firstName != nil){

                    model.name = [NSString stringWithFormat:@"%@%@",lastName,firstName];

                }else{

                    model.name = @"";

                }

                

                [phoneArray addObject:model];

                

                

                

            }

           

        }


    }

    

    [phoneTB reloadData];

    

}


直接调用方法就好  mode是我建的Model 里面包含手机 姓名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值