通讯录

来源:互联网 发布:电力网络 桌游 2人 编辑:程序博客网 时间:2024/05/01 00:00

要访问通讯录,可以使用 AddressBook.framework 框架:

#import <AddressBook/AddressBook.h>


1、授权,建议写在 application: didFinishLaunchingWithOptions: 方法中:

// 创建一个通讯录实例    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);        // 请求通讯录授权    ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {        if (granted) {            NSLog(@"允许访问");        } else {            NSLog(@"不允许访问");        }    });        CFRelease(addressBook);


2、访问通讯录:

// 创建一个通讯录实例    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);        // 获得所有联系人数据    NSArray *peopleArray =  (__bridge NSArray *)(ABAddressBookCopyArrayOfAllPeople(addressBook));    NSInteger peopleCount = peopleArray.count;        for (int i = 0; i < peopleCount; i++) {        ABRecordRef people = (__bridge ABRecordRef)(peopleArray[i]);        NSString *firstName = (__bridge NSString *)(ABRecordCopyValue(people, kABPersonFirstNameProperty));        NSString *lastName = (__bridge NSString *)(ABRecordCopyValue(people, kABPersonLastNameProperty));                NSLog(@"%@ %@", firstName, lastName);                // 获取联系人电话        ABMultiValueRef phone = ABRecordCopyValue(people, kABPersonPhoneProperty);        CFIndex phoneCount = ABMultiValueGetCount(phone);                for (int j = 0; j < phoneCount; j++) {            NSString *phoneLabel = (__bridge NSString *)(ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phone, j)));            NSString *phoneValue = (__bridge NSString *)(ABMultiValueCopyValueAtIndex(phone, j));            NSLog(@"%@:%@", phoneLabel, phoneValue);        }                // 可以使用 ABPersonCopyImageData 获取头像                CFRelease(phone);    }        CFRelease(addressBook);


3、修改联系人信息:

// 创建一个通讯录实例    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);        // 获得所有联系人数据    NSArray *peopleArray =  (__bridge NSArray *)(ABAddressBookCopyArrayOfAllPeople(addressBook));        // 拿到通讯录第一个联系人    ABRecordRef people = (__bridge ABRecordRef)(peopleArray[0]);    ABMultiValueRef phone = ABMultiValueCreateMutable(kABMultiStringPropertyType);    ABMultiValueAddValueAndLabel(phone, @"18511112222", kABPersonPhoneMobileLabel, NULL);        // 修改手机号    ABRecordSetValue(people, kABPersonPhoneProperty, phone, NULL);        // 保存    ABAddressBookSave(addressBook, NULL);        CFRelease(addressBook);


4、添加联系人:

// 创建一个通讯录实例    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);        // 创建联系人    ABRecordRef person = ABPersonCreate();        // 设置联系人属性    ABRecordSetValue(person, kABPersonFirstNameProperty, @"三", NULL);    ABRecordSetValue(person, kABPersonLastNameProperty, @"张", NULL);        ABMultiValueRef phone = ABMultiValueCreateMutable(kABMultiStringPropertyType);    ABMultiValueAddValueAndLabel(phone, @"18711112222", kABPersonPhoneMobileLabel, NULL);    ABRecordSetValue(person, kABPersonPhoneProperty, phone, NULL);        // 设置头像    UIImage *image = [UIImage imageNamed:@"user_default"];    NSData *imageData = UIImagePNGRepresentation(image);    ABPersonSetImageData(person, (__bridge CFDataRef)(imageData), NULL);        // 添加联系人到通讯录并保存    ABAddressBookAddRecord(addressBook, person, NULL);    ABAddressBookSave(addressBook, NULL);        CFRelease(phone);    CFRelease(person);    CFRelease(addressBook);


5、删除联系人:

// 创建一个通讯录实例    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);        // 获得所有联系人数据    NSArray *peopleArray =  (__bridge NSArray *)(ABAddressBookCopyArrayOfAllPeople(addressBook));        // 拿到通讯录最后一个联系人    ABRecordRef people = (__bridge ABRecordRef)(peopleArray.lastObject);        // 删除联系人    ABAddressBookRemoveRecord(addressBook, people, NULL);        ABAddressBookSave(addressBook, NULL);        CFRelease(addressBook);


0 0
原创粉丝点击