手机通讯录AddressBook的使用
来源:互联网 发布:淘宝女装软文范例 编辑:程序博客网 时间:2024/05/18 22:40
通过使用两个框架:AddressBook.framework和AddressBookUI.framework,我们可以在程序中访问并显示iPhone数据库中的联系人信息。
1、AddressBookUI显示部分
AddressBookUI中提供了和联系人显示信息相关的一些Controller,有四个:
ABPeoplePickerNavigationController:显示整个通讯录并可以选择一个联系人的信息
ABPersonViewController:显示一个具体联系人的信息
ABNewPersonViewController:增加一个新的联系人
ABUnknownPersonViewController:完善一个联系人的信息
由于其中最主要的是ABPeoplePickerNavigationController,因此就具体的介绍一下通过程序显示整个通讯录并且可以选择其中某个联系人信息的步骤。
(a)创建并初始化一个ABPeoplePickerNavigationController对象
(b)设置其代理(delegate)
(c)用presentModalViewController:animated:这个方法进行显示整个通讯录页面
- (IBAction)showPicker:(id)sender
{
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
[self presentModalViewController:picker animated:YES];
[picker release];
}
ABPeoplePickerNavigationControllerDelegate的方法介绍
(a)peoplePickerNavigationControllerDidCancel:当用户选择取消时调用这个方法,可以在这个方法里取消整个通讯录页面的显示。
(b)peoplePickerNavigationController:shouldContinueAfterSelectingPerson: 当用户选择了通讯录中某一个联系人时调用这个方法,可以在这里获取联系人的信息。如果希望可以继续显示这个联系人更具体的信息,则return YES。否则取消整个通讯录页面的显示并return NO。
(c)peoplePickerNavigationController:shouldContinueAfterSelectingPerson:property:identifier: 如果上一个方法返回的是YES,则会显示某一个联系人信息,如果选择了联系人的某一项纪录,就会调用这个方法,可以通过点击选择联系人的某一项信息。如果 希望可以对选择的某一项纪录进行进一步操作,比如直接拨打电话或调用邮箱发送邮件,则return YES。否则取消整个通讯录页面的显示并return NO。
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
// assigning control back to the main controller
[picker dismissModalViewControllerAnimated:YES];
}
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{
//获取联系人姓名
name.text = (NSString*)ABRecordCopyCompositeName(person);
//获取联系人电话
ABMutableMultiValueRef phoneMulti = ABRecordCopyValue(person, kABPersonPhoneProperty);
NSMutableArray *phones = [[NSMutableArray alloc] init];
int i;
for (i = 0; i < ABMultiValueGetCount(phoneMulti); i++)
{
NSString *aPhone = [(NSString*)ABMultiValueCopyValueAtIndex(phoneMulti, i) autorelease];
NSString *aLabel = [(NSString*)ABMultiValueCopyLabelAtIndex(phoneMulti, i) autorelease];
NSLog(@"PhoneLabel:%@ Phone#:%@",aLabel,aPhone);
if([aLabel isEqualToString:@"_$!<Mobile>!$_"])
{
[phones addObject:aPhone];
}
}
phoneNo.text=@"";
if([phones count]>0)
{
NSString *mobileNo = [phones objectAtIndex:0];
phoneNo.text = mobileNo;
//NSLog(mobileNo);
}
//获取联系人邮箱
ABMutableMultiValueRef emailMulti = ABRecordCopyValue(person, kABPersonEmailProperty);
NSMutableArray *emails = [[NSMutableArray alloc] init];
for (i = 0;i < ABMultiValueGetCount(emailMulti); i++)
{
NSString *emailAdress = [(NSString*)ABMultiValueCopyValueAtIndex(emailMulti, i) autorelease];
[emails addObject:emailAdress];
}
email.text=@"";
if([emails count]>0)
{
NSString *emailFirst=[emails objectAtIndex:0];
email.text = emailFirst;
//NSLog(emailFirst);
}
[peoplePicker dismissModalViewControllerAnimated:YES];
return NO;
}
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier
{
return NO;
}
2、AddressBook部分
AddressBook框架部分主要是记录联系人的各个信息,ABRecordRef类型的记录既可以代表单个人(kABPersonType),也可以是一个集合(kABGroupType)。
通讯录中联系人的各个属性有两种形式,单值属性和多值属性。单值属性对应的只有一个值,比如联系人的姓名;多值属性对应的可能有多个值,比如联系人有多个电话号码等。
(a)常用方法
CFTypeRef ABRecordCopyValue (
ABRecordRef record,
ABPropertyID property
);
从一个记录中获取某个属性对应的值
(b)单值属性对应的方法
CFStringRef ABRecordCopyCompositeName (
ABRecordRef record
);
获取联系人完整的姓名。
(c)多值属性对应的方法
CFTypeRef ABMultiValueCopyValueAtIndex (
ABMultiValueRef multiValue,
CFIndex index
);
返回对应位置处的属性值
CFStringRef ABMultiValueCopyLabelAtIndex (
ABMultiValueRef multiValue,
CFIndex index
);
返回对应位置处的属性标识
CFArrayRef ABMultiValueCopyArrayOfAllValues (
ABMultiValueRef multiValue
);
返回包含所有属性值的数组
CFIndex ABMultiValueGetCount (
ABMultiValueRef multiValue
);
返回属性值的个数
- 手机通讯录AddressBook的使用
- ios通讯录------AddressBook基本使用
- 通讯录AddressBook
- 使用AddressBook来获取通讯录消息
- 通讯录(AddressBook)1
- 通讯录(AddressBook)2
- 通讯录(AddressBook)3
- AddressBook获取通讯录
- iphone通讯录AddressBook.framework和AddressBookUI.framework的应用
- iphone通讯录AddressBook.framework和AddressBookUI.framework的应用
- iphone通讯录AddressBook.framework和AddressBookUI.framework的应用
- iOS手机通讯录的简单使用
- AddressBook 调用系统通讯录数据
- AddressBook通讯录右边索引条
- 手机通讯录的逻辑
- 手机通讯录的实现
- ios中获取当前手机通讯录信息一、在工程中添加AddressBook.framework和AddressBookUI.framework
- iOS9 获取手机通讯录及contact框架的使用
- poj-1065
- C++实现检查数组越界
- iPhone游戏开发 - Zatun研发出了游戏玩家的视角
- CC++初学者编程教程(10) 搭建Android java C/C++ NDK QTforAndroid 开发环境
- 输入一颗二元查找树,将该树转换为它的镜像
- 手机通讯录AddressBook的使用
- Eclipse+C开发环境搭建
- android permission权限大全
- iPhone开发的秘密迷魂阵金应用程式游戏鹅评论
- Linux——环境变量配置文件的区别
- [c.y.j]滚动条 练习
- 大数阶乘 nyoj28
- ibatis中的#XX#和$XX$的区别。
- iPhone应用程序开发取得了巨大的憧憬当中iPhone用户