iOS-----使用AddressBook添加联系人
使用AddressBook添加联系人
添加联系人的步骤如下: |
|
1 |
创建ABAddressBookRef,这就得到了对地址簿的引用。 |
2 |
调用ABPersonCreate()函数创建一个空的ABRecordRef,得到一条空的联系人记录 |
3 |
根据需要为ABRecordRef设置属性值。 只设置姓氏、名字等简单信息,则直接调用ABRecordSetValue()函数为ABRecordRef的指定属性设置属性值即可. 设置电话号码、电子邮件等可以指定label的属性,需要先创建一个ABMutableMultiValueRef, 然后调用ABMultiValueAddValueAndLabel()函数向ABMutableMultiValueRef中添加多个值,最后才能调用ABRecordSetValue()函数为ABRecordRef的指定属性设置属性值. |
4 |
调用ABAddressBookAddRecord()函数将指定ABRecordRef记录添加到地址簿中. |
5 |
调用ABAddressBookSave()函数将删除操作保存到底层地址簿中. |
代码片段 |
// 特此说明用的main. storyboard @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } - (IBAction)add:(id)sender { // 名 NSString *firstName = self.firstnameField.text; // 姓 NSString *lastName = self.lastnameField.text; NSString *homePhone = self.homePhoneField.text;// 座机 NSString* mobilePhone = self.mobilePhoneField.text :// 手机 NSString* workMail = self.workMailField.text ; NSString* privateMail = self. privateMailField.text ; NSString* country = self.countryField.text ; NSString* state = self. stateField.text ; CFErrorRef error = nil; // 创建ABAddressBook,该函数的第1个参数暂时并未使用,直接传入NULL即可. ABAddressBookRef ab = ABAddressBookCreateWithOptions(NULL, &error); if(!error) { // 请求访问用户地址簿 ABAddressBookAccessWithCompletion(ab, ^(bool granted, CFErrorRef error) { // 如果用户允许访问地址簿 if(granted) { // 创建一条新的记录 ABRecordRef rec = ABPersonCreate(); // 为rec的kABPersonFirstNameProperty(名字)属性设置值 ABRecordSetValue(rec, kABPersonFirstNameProperty, (__bridge CFStringRef)firstName, NULL); // 为rec的kABPresonLastNameProperty(姓氏)属性设置值 ABRecordSetValue(rec, kABPersonLastNameProperty, (__bridge CFStringRef)lastName, NULL); // 创建ABMutableMultiValueRef来管理多个电话号码 ABMutableMultiValueRef phoneValue = ABMultiValueCreateMutable(kABPersonPhoneProperty); // 为家庭的电话号码添加label ABMultiValueAddValueAndLabel(phoneValue , (__bridge CFTypeRef)homePhone), kABHomeLabel, NULL); // 为移动的电话号码添加label ABMultiValueAddValueAndLabel(phoneValue , (__bridge CFTypeRef)mobilePhone), kABPersonPhoneMobileLabel, NULL); // 为rec的kABPersonPhoneProperty(电话)属性设置值 ABRecordSetValue(rec, kABPersonPhoneProperty, phoneValue, NULL); // 创建ABMutableMultiValueRef来管理多个电子邮件 ABMutableMultiValueRef mailValue = ABMultiValueCreateMutable(kABPersonEmailProperty); // 为工作的电子邮件添加label ABMultiValueAddValueAndLabel(mailValue , (__bridge CFStringRef)workMail, (__bridge CFStringRef)@”工作”, NULL); // 为私人的电子邮件添加label ABMultiValueAddValueAndLabel(mailValue , (__bridge CFStringRef)privateMail, (__bridge CFStringRef)@”私人”, NULL); // 为rec的kABPersonEmailProperty(电子邮件)属性设置值 ABRecordSetValue(rec, kABPersonMailProperty, mailValue, NULL); // 创建ABMutableMultiValueRef来管理多个地址 ABMutableMultiValueRef addrValue = ABMultiValueCreateMutable(kABPersonAddressProperty); // 创建一条新的ABRecordRef记录,这条记录不包含任何属性 NSDictionary *addrDict = [NSDictionary dictionaryWithObjectsAndKeys:country, kABPersonAddressCountryKey, state, kABPersonAddressStateKey, nil]; // 为住址的地址添加label ABMultiValueAddValueAndLabel(addrValue, (__bridge CFTypeRef)addrDict, (__bridge CFStringRef)@”地址”, NULL); // 为rec的kABPersonAddressProperty(地址)属性设置值 ABRecordSetValue(rec, kABPersonAddressProperty, addrValue, NULL); BOOL result = ABAddressBookAddRecord(ab, rec, NULL); if(result) { // 将程序所做的修改保存到地址簿中,如果保存成功 if(ABAddressBookSave(ab, NULL)) { [self showAlert:@”成功添加新的联系人”]; } else { [self showAlert:@”添加失败”]; } } } }) } - (IBAction)finishEdit:(id)sender { [sender resignFirstResponder]; } - (void)showAlert:(NSString *)msg { // 使用UIAlertView显示msg信息 [ [ [UIAlertView alloc] initWithTitle:@” 提 示 ” message:msg delegate:nil cancelButtonTitle:@”确定” otherButtonTitles:nil] show ]; } @end // 注释:因为iOS系统要求地址必须是{国家:国家值, 省份:省份值, 城市:城市值}这种NSDictionary对象,所以创建了一个NSDictionary对象作为地址值 |
效果图 |
iOS-----使用AddressBook添加联系人的更多相关文章
- iOS开发--系统通讯录的访问与添加联系人
公司项目有访问通讯录的需求,所以开始了探索之路.从开始的一无所知,到知识的渐渐清晰.这一切要感谢广大无私分享的 “coder”,注:我是尊称的语气! 苹果提供了访问系统通讯录的框架,以便开发者对系统通 ...
- iOS-----使用AddressBook管理联系人
使用AddressBook管理联系人 iPhone手机通常都是自带的Contacts应用,包括所有联系人的性(last name).名(first name).电话.E-mail地址.住址.生日等各种 ...
- iOS 获得通讯录中联系人的所有属性--b
ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef results = ABAddressBookCopyArrayOfA ...
- selenium数据驱动模式实现163邮箱的登录及添加联系人自动化操作
项目结构如下: 要求python3.0 selenium3.0 下面是代码: appModubles:addContactPersonActtion.py和LoginAction.py addCont ...
- iOS-----使用addressBook管理联系人之修改联系人
使用addressBook管理联系人之修改联系人 修改联系人 修改联系人先从底层地址簿中加载一条ABRecordRef记录,然后对这条ABRecordRef记录的属性值进行修改,修改完成后把这条修改后 ...
- Android 调用系统联系人界面的添加联系人,添加已有联系人,编辑和修改。
一.添加联系人 Intent addIntent = new Intent(Intent.ACTION_INSERT,Uri.withAppendedPath(Uri.parse("cont ...
- Android 利用内容提供者添加联系人的操作
上文中<Android 获取系统的联系人>主要介绍了怎样获取系统联系人并实战了一下,本文将介绍如何添加一条联系人信息 添加联系人 1. 添加raw_contacts表,添加一条联系人的id ...
- 使用ContentProvider管理联系人------添加联系人
add.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 获取程序界面中的三个 ...
- Android利用ContentProviderOperation添加联系人
Android添加联系人有两种方式: 1. 直接调用插入语句,先插入一个空Item,得到一个id,然后给这个id对应的插入其他信息,如姓名,号码,邮件等: 2. 利用ContentProviderOp ...
随机推荐
- 上传文件小的oK,大一点的传不了,显示 (failed) net::ERR_CONNECTION_RESET
我很确定已经修改了php.ini中的文件上传限制,文件权限可写. 修改php.ini file_uploads = on ;是否允许通过HTTP上传文件的开关.默认为ON即是开 upload_tmp_ ...
- zookeeper集群-solrcloud集群
本文只写具体的搭建过程,具体原理请看官网文档.国内博客都是基本上都是通过tomcat搭建的solr,本文是通过内部集成的jetty容器搭建. 一.zookeeper集群搭建 1.安装JAVA环境,版本 ...
- 内置函数——format
说明: 1. 函数功能将一个数值进行格式化显示. 2. 如果参数format_spec未提供,则和调用str(value)效果相同,转换成字符串格式化. >>> format(3.1 ...
- 关于eval 与new Function 到底该选哪个?
废话不多说,直接上测试代码 复制代码 代码如下: var aa = "{name:'cola',item:[{age:11},{age:22},{age:23},{age:23}]}&quo ...
- MySQL测试工具之-tpcc
首先安装tpcc 官网地址:https://github.com/Percona-Lab/tpcc-mysql [root@test3 src]# unzip tpcc-mysql-master.zi ...
- 使用索贝尔(Sobel)进行梯度运算时的数学意义和代码实现研究
对于做图像处理的工程师来说,Sobel非常熟悉且常用.但是当我们需要使用Sobel进行梯度运算,且希望得到“数学结果”(作为下一步运算的基础)而不是“图片效果”的时候,就必须深入了解Sobel的知识原 ...
- 《Java程序设计》第三章-基础语法
20145221<Java程序设计>第三章-基础语法 总结 教材学习内容总结 类型.变量与运算符 类型 Java可区分为基本类型(Primitive Type)和类类型(Class Typ ...
- G-Sensor 8452驱动及相关
8452是一款G-Sensor芯片,采用I2C跟主芯片通讯,采用中断方式跟操作系统协作.通过内部检测XYZ三个方向的加速度,实现各种应用. (1)原理框图如下: 现在来实现在WINCE中的I2C驱动, ...
- numpy数组广播
numpy数组的广播功能强大,但是也同时让人疑惑不解,现在让我们来谈谈其中的原理. 广播原则: 如果两个数组的后缘维度(即:从末尾开始算起的维度)的轴长相符或其中一方的长度为1,则认为它们是广播兼容的 ...
- Java FastJson 介绍
1.前言 1.1.FastJson的介绍: JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的 ...