通讯录(ios自带无界面)

本文介绍如何在iOS应用中使用AddressBook框架来请求访问用户的通讯录权限,并展示了如何遍历并读取所有联系人的姓名及电话号码。

1,添加框架AddressBook.framework

2,请求权限认证,在Appdelegate.m文件中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

        /*

         kABAuthorizationStatusNotDetermined = 0, 没有决定是否授权

         kABAuthorizationStatusRestricted,  受限制

         kABAuthorizationStatusDenied,  拒绝

         kABAuthorizationStatusAuthorized  授权

         */

        //请求用户授权

        if(ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusNotDetermined)

        {

            ABAddressBookRef book=ABAddressBookCreateWithOptions(NULL, NULL);

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

                if (granted) {

                    NSLog(@"授权成功");

                }

                else

                {

                    NSLog(@"授权失败,%@",error);

                }

            });

            

        }

 

       return YES;

}

 

3,控制器中实现

 

#import "ViewController.h"

#import <AddressBook/AddressBook.h>

 

@interface ViewController ()

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

//    /*

//     kABAuthorizationStatusNotDetermined = 0, 没有决定是否授权

//     kABAuthorizationStatusRestricted,  受限制

//     kABAuthorizationStatusDenied,  拒绝

//     kABAuthorizationStatusAuthorized  授权

//     */

//    //请求用户授权

//    if(ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusNotDetermined)

//    {

//        ABAddressBookRef book=ABAddressBookCreateWithOptions(NULL, NULL);

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

//            if (granted) {

//                NSLog(@"授权成功");

//            }

//            else

//            {

//                NSLog(@"授权失败,%@",error);

//            }

//        });

//        

//    }

 

}

//获取数据

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    //1.创建通讯录

    ABAddressBookRef book=ABAddressBookCreateWithOptions(NULL, NULL);

    //获取所有联系人记录

    CFArrayRef multivalues=ABAddressBookCopyArrayOfAllPeople(book);

    CFIndex count=CFArrayGetCount(multivalues);

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

        ABRecordRef record=CFArrayGetValueAtIndex(multivalues, i);

        CFStringRef first=ABRecordCopyValue(record, kABPersonFirstNameProperty);

        CFStringRef last=ABRecordCopyValue(record, kABPersonLastNameProperty);

        NSLog(@"%@,%@",(__bridge_transfer NSString*)first,(__bridge_transfer NSString*)last);

        ABMultiValueRef multiPhones=ABRecordCopyValue(record, kABPersonPhoneProperty);

        

        CFIndex countPhone=ABMultiValueGetCount(multiPhones);

        for (int j=0; j<countPhone; j++) {

            CFStringRef phone=ABMultiValueCopyValueAtIndex(multiPhones, j);

            NSLog(@"phone=%@",(__bridge_transfer NSString*)phone);

        }

        CFRelease(multiPhones);

    }

    CFRelease(multivalues);

    CFRelease(book);

    

}

 

 

 

 

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

@end

转载于:https://www.cnblogs.com/tangranyang/p/4656144.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值