通讯录
来源:互联网 发布:电力网络 桌游 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);
// 创建一个通讯录实例 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);
// 创建一个通讯录实例 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
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 搬移网站程序到不同服务器的操作流程
- JAVA的Random类
- 一个线程写完数据后,另外三个线程按顺序读取
- 【最大流】【HDU2883】【kebab】
- Magento订单取消的时候还原优惠券的使用次数(Single Coupon marked as used when payment pending)
- 通讯录
- ubuntu14.10安装jdk
- ListView OnScrollListener详解
- JAVA中的Random()函数
- WDK 8.1 Sample - ObCallback Callback Registration Driver 学习总结
- C++第七章
- 表关系:一对多,多对多
- 推荐一个下载andorid studio的地方
- poj 2299 Ultra-QuickSort 树状数组求逆序数