ios通讯录------AddressBook基本使用
来源:互联网 发布:滚现在是网络 编辑:程序博客网 时间:2024/05/16 08:03
ios中如果要用到通讯录,系统提供了两个框架
AddressBookUI.framework
- 提供了联系人列表界面、联系人详情界面、添加联系人界面等
- 一般用于选择联系人
AddressBook.framework
- 纯C语言的API,仅仅是获得联系人数据
- 没有提供UI界面展示,需要自己搭建联系人展示界面
- 里面的数据类型大部分基于Core Foundation框架,使用起来极其蛋疼
从iOS6开始,需要得到用户的授权才能访问通讯录,因此在使用之前,需要检查用户是否已经授权
开始上代码
#import "ViewController.h"#import <AddressBook/AddressBook.h>@interface ViewController ()- (IBAction)readRecord:(id)sender;- (IBAction)updateRecord:(id)sender;- (IBAction)addRecord:(id)sender;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // 判断是否授权成功 if(ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) { // 授权成功直接返回 return; } // 0.创建通讯录 ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL); // 1.请求用户授权 // 第一个参数接收通讯录 // 第二个参数是一个block, 无论授权成功还是失败都会调用 ABAddressBookRequestAccessWithCompletion(book, ^(bool granted, CFErrorRef error) { // granted YES 代表用户授权成功 NO 代表用户授权失败 if (granted) { NSLog(@"授权成功"); }else { NSLog(@"授权失败"); } });}// 读取联系人信息- (IBAction)readRecord:(id)sender{ // 判断是否授权成功,授权失败直接返回 if(ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusAuthorized) return; // 1.创建通讯录对象 ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL); // 2.获取通讯录中得所有联系人 CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(book); CFIndex count = CFArrayGetCount(allPeople); // 3.打印每一个联系人额信息 for (int i = 0; i < count; i++) { // 联系人列表中的每一个人都是一个ABrecordRef ABRecordRef prople = CFArrayGetValueAtIndex(allPeople, i); //取出当前联系人的的电话信息 // 获取练习人得姓名 CFStringRef lastName = ABRecordCopyValue(prople, kABPersonLastNameProperty); CFStringRef firstName = ABRecordCopyValue(prople, kABPersonFirstNameProperty); NSLog(@"%@ %@", firstName, lastName); // 获取联系人的电话 // 从联系人中获取到得电话是所有的电话 ABMultiValueRef phones = ABRecordCopyValue(prople, kABPersonPhoneProperty); // 获取当前联系人总共有多少种电话 CFIndex phoneCount = ABMultiValueGetCount(phones); for (int i = 0; i < phoneCount; i++) { CFStringRef name = ABMultiValueCopyLabelAtIndex(phones, i); // 从所有的电话中取出指定的电话 CFStringRef value = ABMultiValueCopyValueAtIndex(phones, i); NSLog(@"name = %@ value = %@", name, value); } }}// 更新联系人- (IBAction)updateRecord:(id)sender{ // 判断是否授权成功 if(ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusAuthorized) { // 授权失败直接返回 return; } // 1.创建通讯录对象 ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL); // 2.获取通讯录中得所有联系人 CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(book); // 3.取出其中的一个联系人 ABRecordRef people = CFArrayGetValueAtIndex(allPeople, 0); // 4.修改联系人信息 ABRecordSetValue(people, kABPersonLastNameProperty, @"牛", NULL); // 5.保存修改之后的信息 ABAddressBookSave(book, NULL);}- (IBAction)addRecord:(id)sender{ // 1.创建联系人 ABRecordRef people = ABPersonCreate(); // 2.设置联系人信息 ABRecordSetValue(people, kABPersonLastNameProperty, @"牛", NULL); ABRecordSetValue(people, kABPersonFirstNameProperty, @"查", NULL); // 创建电话号码 ABMultiValueRef phones = ABMultiValueCreateMutable(kABMultiStringPropertyType); ABMultiValueAddValueAndLabel(phones, @"123456789", kABPersonPhoneMainLabel, NULL); ABMultiValueAddValueAndLabel(phones, @"8888888", kABPersonPhoneHomeFAXLabel, NULL); ABRecordSetValue(people, kABPersonPhoneProperty, phones, NULL); // 3.拿到通讯录 ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL); // 4.将联系人添加到通讯录中 ABAddressBookAddRecord(book, people, NULL); // 5.保存通讯录 ABAddressBookSave(book, NULL);}@end
注:在使用C语言的函数时,只要函数名称包含create/copy/retain,就必须自己手动释放
0 0
- ios通讯录------AddressBook基本使用
- 手机通讯录AddressBook的使用
- 如何使用iOS AddressBook
- 如何使用iOS AddressBook
- 如何使用iOS AddressBook
- 如何使用iOS AddressBook
- 如何使用iOS AddressBook
- 如何使用iOS AddressBook
- IOS疯狂基础之AddressBook通讯录
- 通讯录AddressBook
- 使用AddressBook来获取通讯录消息
- iOS开发------操作通讯录(AddressBook篇)&通讯录UI(AddressBookUI篇)
- 如何使用iOS AddressBook , ABPeoplePickerNavigationController
- IOS进阶 AddressBook.framework和AddressBookUI.framework访问通讯录
- 通讯录(AddressBook)1
- 通讯录(AddressBook)2
- 通讯录(AddressBook)3
- AddressBook获取通讯录
- 每日问题(持续更新)
- UIView如何管理它的子视图
- sdut oj3402 数据结构实验之排序五:归并求逆序数
- Maven 手动添加 JAR 包到本地仓库
- python字符串操作(连接、比较、格式化等)
- ios通讯录------AddressBook基本使用
- HttpResponse取cookie(转自百度知道)
- 安卓小米系统开发一些适配问题
- IMS Modify Call send request 发出升级视频请求
- map与对象互相转换
- 多态和虚函数和抽象类
- smp boot
- 跳转拨号盘,输入字符方案
- POJ3292——Semi-prime H-numbers