iOS通讯录读写

原创 2016年06月01日 15:03:56

首先引入addressBook.framework addressBookUI.framework框架
首先申请读写权限 
// Request authorization to Address Book
    ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);
    
    if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {
        ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) {
            // First time access has been granted, add the contact
        });
    }
    else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {
        // The user has previously given access, add the contact
    }
    else {
        // The user has previously denied access
        // Send an alert telling user to change privacy setting in settings app
    }



添加通讯录

ABAddressBookRef iPhoneAddressBook = ABAddressBookCreate();
        ABRecordRef newPerson = ABPersonCreate();
        
        CFErrorRef error = NULL;
        
        ABRecordSetValue(newPerson, kABPersonFirstNameProperty, (__bridge CFTypeRef)(p.name), &error);
        
        //phone number
        ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
        ABMultiValueAddValueAndLabel(multiPhone, (__bridge CFTypeRef)(p.number), kABPersonPhoneMainLabel, NULL);
        //        ABMultiValueAddValueAndLabel(multiPhone, @"1-123-456-7890", kABPersonPhoneMobileLabel, NULL);
        //        ABMultiValueAddValueAndLabel(multiPhone, @"1-987-654-3210", kABOtherLabel, NULL);
        ABRecordSetValue(newPerson, kABPersonPhoneProperty, multiPhone,&error);
        CFRelease(multiPhone);
        
        ABAddressBookAddRecord(iPhoneAddressBook, newPerson, &error);
        ABAddressBookSave(iPhoneAddressBook, &error);
        if (error != NULL)
        {
            NSLog(@"Danger Will Robinson! Danger!%@", error);
        }

删除通讯录


//打开电话本数据库
    ABAddressBookRef addressRef=ABAddressBookCreate();
    
    //返回所有联系人到一个数组中
    CFArrayRef personArray = ABAddressBookCopyArrayOfAllPeople(addressRef);
    
    //返回联系人数量
    CFIndex personCount = ABAddressBookGetPersonCount(addressRef);
    
    //循环读取每个联系人
    for (int i =0;i<personCount;i++){
        
        //得到当前联系人
        
        ABRecordRef personRef=CFArrayGetValueAtIndex(personArray, i);
        
        NSString *firstName = (__bridge NSString *)ABRecordCopyValue(personRef, kABPersonFirstNameProperty);
        
        
        ABMultiValueRef phones = (ABMultiValueRef) ABRecordCopyValue(personRef, kABPersonPhoneProperty);
        
        NSString *phone;
        
        for(int i = 0 ;i < ABMultiValueGetCount(phones); i++)
        {
            phone = (__bridge NSString *)ABMultiValueCopyValueAtIndex(phones, i);
        }
        
        
        NSLog(@"%@-%@", firstName, phone);
        
        for (Person *p in self.array) {
            if ([p.name isEqual:firstName] && [p.number isEqual:phone]) {
                //删除联系人
                ABAddressBookRemoveRecord(addressRef, personRef, nil);
                
            }
        }
        CFRelease(personRef);
    }




版权声明:

iOS 通讯录备份、恢复

和相册 备份一样,公司产品备份功能有通讯录备份 功能,自然也有通讯录恢复了。iOS通讯录相关操作,iOS对通讯录的操作离不开的框架: #import #import         iOS提供给我们...
  • u010576399
  • u010576399
  • 2016年01月11日 11:32
  • 1219

自定义iOS通讯录

苹果给用户提供了自己的通讯录,但是根据业务的需求,需要自定义通讯录,...
  • u012701023
  • u012701023
  • 2016年10月31日 18:16
  • 990

iOS 获取通讯录的4种方式详解

使用场景一些App通过手机号码来推荐好友,如 微博、支付宝首先客户端会获取通讯录中的所有手机号然后将这些手机号提交到App服务器中,服务器会查找每个手机号对应的App账号如QQ号码返回到客户端,然后客...
  • vbirdbest
  • vbirdbest
  • 2016年10月22日 21:38
  • 7991

分享了iOS获取通讯录的4种方式

本文实例为大家分享了iOS获取通讯录的4种方式,供大家参考,具体内容如下 使用场景 一些App通过手机号码来推荐好友,如 微博、支付宝 首先客户端会获取通讯录中的所有手机号然后将这些...
  • Vanpoe
  • Vanpoe
  • 2017年12月01日 09:41
  • 455

iOS导入手机通讯录

ABAddressBookRef addressBooks = nil;          if ([[UIDevice currentDevice].systemVersion f...
  • IT_ZGC
  • IT_ZGC
  • 2017年02月07日 14:48
  • 890

iOS通讯录增删改查

自己研究的一些基本操作,高手略过。。。
  • ITMan_iOS
  • ITMan_iOS
  • 2015年04月27日 14:51
  • 813

关于IOS获取本地通讯录信息(包含iOS9.0前后)

在ios开发当中,获取用户本地的通讯录功能愈加频繁的出现,七两自己也在自己公司的项目当中遇到的获取本地的通讯录信息的功能(俗称“种子用户功能”,太可怕了)。对此七两总结了自己使用本地通讯录时的注意点,...
  • kenrry1992
  • kenrry1992
  • 2016年04月26日 17:55
  • 8699

iOS 使用UILocalizedIndexedCollation实现通讯录样式的索引

前一段时间要在应用程序中要加入检索的功能,在网上找了很多是手写的,于是今天在这里写一下备忘。直接贴的项目代码。 第一步:对数据源进行排序和分区处理。这里addressBookArray是存储最后...
  • lixuzong
  • lixuzong
  • 2014年12月09日 17:04
  • 1072

iPhone通讯录联系人的增加、删除、修改的操作

1.需要引入AddressBook.framework框架 2.iPhone通讯录的增加联系人的操作,代码如下(放到项目中可直接运行): // 初始化一个ABAddressBookRef对象,...
  • yongyinmg
  • yongyinmg
  • 2014年05月20日 16:24
  • 9988

iOS通讯录&第三方框架介绍

首先很久没有更博客,先跟同学们说声抱歉!那么今天我们的主题是讲如何访问系统通讯录以及第三方的一个通讯录框架的介绍,那么废话不多说!直接上代码! iOS中,有2个框架可以访问用户的通讯录 ...
  • ZZ_IOSdeveloper
  • ZZ_IOSdeveloper
  • 2017年03月08日 18:29
  • 190
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS通讯录读写
举报原因:
原因补充:

(最多只允许输入30个字)