美文网首页
ios 访问通讯录

ios 访问通讯录

作者: Mirsiter_魏 | 来源:发表于2018-04-11 18:04 被阅读0次

- (void)requestAuthorizationForAddressBook {

        // 判断当前的授权状态是否是用户还未选择的状态

    ABAuthorizationStatus status = ABAddressBookGetAuthorizationStatus();

    if (status == kABAuthorizationStatusNotDetermined)

    {

        ABAddressBookRefbookRef =ABAddressBookCreate();

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

            if(granted)

            {

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

                [selfgetmyAddressbook];

            }

            else

            {

                NSLog(@"授权失败!");

            }

        });

    }else if (status == kABAuthorizationStatusAuthorized){

        [self getmyAddressbook];

    }else{

        UIAlertView* alert = [[UIAlertViewalloc]initWithTitle:nilmessage:@"您的通讯录暂未允许访问,请去设置->隐私里面授权!"delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil,nil];

        [alertshow];

        NSLog(@"您的通讯录暂未允许访问,请去设置->隐私里面授权!");

        return;

    }

}

- (void)getmyAddressbook {

    // 创建通讯录对象

    ABAddressBookRef bookRef = ABAddressBookCreate();

    // 获取通讯录中所有的联系人

    CFArrayRef arrayRef = ABAddressBookCopyArrayOfAllPeople(bookRef);

        // 遍历所有联系人

    CFIndexcount =CFArrayGetCount(arrayRef);

    for(inti =0; i < count; i++)

    {

        ABRecordRefrecord =CFArrayGetValueAtIndex(arrayRef, i);

        AddressBookData * data = [[AddressBookData alloc] init];

        // 获取姓名

        NSString *firstName = (__bridge_transfer NSString *)ABRecordCopyValue(record, kABPersonFirstNameProperty);

        NSString *lastName = (__bridge_transfer NSString *)ABRecordCopyValue(record, kABPersonLastNameProperty);

        NSLog(@"firstName = %@, lastName = %@", firstName, lastName);

        // 获取电话号码

        ABMultiValueRef multiValue = ABRecordCopyValue(record, kABPersonPhoneProperty);

        CFIndexcount =ABMultiValueGetCount(multiValue);

        NSMutableArray * array = [[NSMutableArray alloc] init];

        for(inti =0; i < count; i ++)

        {

            NSString*label = (__bridge_transferNSString*)ABMultiValueCopyLabelAtIndex(multiValue, i);

            NSString*phone = (__bridge_transferNSString*)ABMultiValueCopyValueAtIndex(multiValue, i);

            NSLog(@"label = %@, phone = %@", label, phone);

            NSString *strUrl = [phone stringByReplacingOccurrencesOfString:@"-" withString:@""];  //去掉-

            [arrayaddObject:strUrl];

        }

        data.userMobileArray= [arraycopy];

        if([NSStringisEmptyString:firstName] && [NSStringisEmptyString:lastName]) {

            data.userNameStr= [arrayfirstObject];

        }elseif(![NSStringisEmptyString:firstName] && [NSStringisEmptyString:lastName]){

            data.userNameStr= firstName;

        }

        elseif([NSStringisEmptyString:firstName] && ![NSStringisEmptyString:lastName]){

            data.userNameStr= lastName;

        }else{

            data.userNameStr= [NSStringstringWithFormat:@"%@%@",lastName,firstName];

        }

        [self.listArrayaddObject:data];

        [self.tableViewreloadData];

        CFRelease(multiValue);

    }

    CFRelease(bookRef);

    CFRelease(arrayRef);

}

相关文章

  • 重点 (二十九) : 通讯录

    如何访问用户的通讯录 在iOS中,有2个框架可以访问用户的通讯录 AddressBookUI.framework ...

  • AddressBookFramework & Conta

    iOS之前是使用 AddressBookFramework 访问通讯录,但从 iOS 9.0 开始被 Contac...

  • iOS学习笔记29-系统服务(二)通讯录

    一、通讯录 iOS中的通讯录是存储在数据库中的,由于iOS的权限设计,开发人员是不允许直接访问通讯录数据库的,实现...

  • ios 访问通讯录

    - (void)requestAuthorizationForAddressBook { // 判断当前的...

  • iOS 访问通讯录

    iOS 9 之后,苹果增加新特性的库 - ContactsUI.framework 和 Contacts.fram...

  • iOS13&Xcode11适配问题

    1.通讯录权限问题iOS 13中将禁止应用开发者访问用户通讯录备注信息,需将keys中的CNContactNote...

  • 调用系统通讯录

    #import "ViewController.h" //iOS6开始, 要访问通讯录, 必须先授权. 不授权上架...

  • 获取系统通讯录

    支持本文作者Mr_洛先森,请阅读原文获取通讯录样式: 在ios中,有两个框架可以访问用户的通讯录 AddressB...

  • iOS 通讯录的访问

    导入框架Contacts 权限判断 添加 修改 删除

  • iOS10 权限崩溃问题

    iOS10上,若你的项目访问了隐私数据,比如:相机,相册,通讯录等,app会直接Crash了,这是因为iOS10对...

网友评论

      本文标题:ios 访问通讯录

      本文链接:https://www.haomeiwen.com/subject/louzhftx.html