ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook);
for(int i = 0; i < CFArrayGetCount(results); i++)
{
ABRecordRef person = CFArrayGetValueAtIndex(results, i);
//读取firstname
NSString *personName = (NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
if(personName != nil)
textView.text = [textView.text stringByAppendingFormat:@"n姓名:%@n",personName];
//读取lastname
NSString *lastname = (NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);
if(lastname != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",lastname];
//读取middlename
NSString *middlename = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNameProperty);
if(middlename != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",middlename];
//读取prefix前缀
NSString *prefix = (NSString*)ABRecordCopyValue(person, kABPersonPrefixProperty);
if(prefix != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",prefix];
//读取suffix后缀
NSString *suffix = (NSString*)ABRecordCopyValue(person, kABPersonSuffixProperty);
if(suffix != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",suffix];
//读取nickname呢称
NSString *nickname = (NSString*)ABRecordCopyValue(person, kABPersonNicknameProperty);
if(nickname != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",nickname];
//读取firstname拼音音标
NSString *firstnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonFirstNamePhoneticProperty);
if(firstnamePhonetic != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",firstnamePhonetic];
//读取lastname拼音音标
NSString *lastnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonLastNamePhoneticProperty);
if(lastnamePhonetic != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",lastnamePhonetic];
//读取middlename拼音音标
NSString *middlenamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNamePhoneticProperty);
if(middlenamePhonetic != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",middlenamePhonetic];
//读取organization公司
NSString *organization = (NSString*)ABRecordCopyValue(person, kABPersonOrganizationProperty);
if(organization != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",organization];
//读取jobtitle工作
NSString *jobtitle = (NSString*)ABRecordCopyValue(person, kABPersonJobTitleProperty);
if(jobtitle != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",jobtitle];
//读取department部门
NSString *department = (NSString*)ABRecordCopyValue(person, kABPersonDepartmentProperty);
if(department != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",department];
//读取birthday生日
NSDate *birthday = (NSDate*)ABRecordCopyValue(person, kABPersonBirthdayProperty);
if(birthday != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",birthday];
//读取note备忘录
NSString *note = (NSString*)ABRecordCopyValue(person, kABPersonNoteProperty);
if(note != nil)
textView.text = [textView.text stringByAppendingFormat:@"%@n",note];
//第一次添加该条记录的时间
NSString *firstknow = (NSString*)ABRecordCopyValue(person, kABPersonCreationDateProperty);
NSLog(@"第一次添加该条记录的时间%@n",firstknow);
//最后一次修改該条记录的时间
NSString *lastknow = (NSString*)ABRecordCopyValue(person, kABPersonModificationDateProperty);
NSLog(@"最后一次修改該条记录的时间%@n",lastknow);
//获取email多值
ABMultiValueRef email = ABRecordCopyValue(person, kABPersonEmailProperty);
int emailcount = ABMultiValueGetCount(email);
for (int x = 0; x < emailcount; x++)
{
//获取email Label
NSString* emailLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(email, x));
//获取email值
NSString* emailContent = (NSString*)ABMultiValueCopyValueAtIndex(email, x);
textView.text = [textView.text stringByAppendingFormat:@"%@:%@n",emailLabel,emailContent];
}
//读取地址多值
ABMultiValueRef address = ABRecordCopyValue(person, kABPersonAddressProperty);
int count = ABMultiValueGetCount(address);
for(int j = 0; j < count; j++)
{
//获取地址Label
NSString* addressLabel = (NSString*)ABMultiValueCopyLabelAtIndex(address, j);
textView.text = [textView.text stringByAppendingFormat:@"%@n",addressLabel];
//获取該label下的地址6属性
NSDictionary* personaddress =(NSDictionary*) ABMultiValueCopyValueAtIndex(address, j);
NSString* country = [personaddress valueForKey:(NSString *)kABPersonAddressCountryKey];
if(country != nil)
textView.text = [textView.text stringByAppendingFormat:@"国家:%@n",country];
NSString* city = [personaddress valueForKey:(NSString *)kABPersonAddressCityKey];
if(city != nil)
textView.text = [textView.text stringByAppendingFormat:@"城市:%@n",city];
NSString* state = [personaddress valueForKey:(NSString *)kABPersonAddressStateKey];
if(state != nil)
textView.text = [textView.text stringByAppendingFormat:@"省:%@n",state];
NSString* street = [personaddress valueForKey:(NSString *)kABPersonAddressStreetKey];
if(street != nil)
textView.text = [textView.text stringByAppendingFormat:@"街道:%@n",street];
NSString* zip = [personaddress valueForKey:(NSString *)kABPersonAddressZIPKey];
if(zip != nil)
textView.text = [textView.text stringByAppendingFormat:@"邮编:%@n",zip];
NSString* coutntrycode = [personaddress valueForKey:(NSString *)kABPersonAddressCountryCodeKey];
if(coutntrycode != nil)
textView.text = [textView.text stringByAppendingFormat:@"国家编号:%@n",coutntrycode];
}
//获取dates多值
ABMultiValueRef dates = ABRecordCopyValue(person, kABPersonDateProperty);
int datescount = ABMultiValueGetCount(dates);
for (int y = 0; y < datescount; y++)
{
//获取dates Label
NSString* datesLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(dates, y));
//获取dates值
NSString* datesContent = (NSString*)ABMultiValueCopyValueAtIndex(dates, y);
textView.text = [textView.text stringByAppendingFormat:@"%@:%@n",datesLabel,datesContent];
}
//获取kind值
CFNumberRef recordType = ABRecordCopyValue(person, kABPersonKindProperty);
if (recordType == kABPersonKindOrganization) {
// it's a company
NSLog(@"it's a companyn");
} else {
// it's a person, resource, or room
NSLog(@"it's a person, resource, or roomn");
}
//获取IM多值
ABMultiValueRef instantMessage = ABRecordCopyValue(person, kABPersonInstantMessageProperty);
for (int l = 1; l < ABMultiValueGetCount(instantMessage); l++)
{
//获取IM Label
NSString* instantMessageLabel = (NSString*)ABMultiValueCopyLabelAtIndex(instantMessage, l);
textView.text = [textView.text stringByAppendingFormat:@"%@n",instantMessageLabel];
//获取該label下的2属性
NSDictionary* instantMessageContent =(NSDictionary*) ABMultiValueCopyValueAtIndex(instantMessage, l);
NSString* username = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageUsernameKey];
if(username != nil)
textView.text = [textView.text stringByAppendingFormat:@"username:%@n",username];
NSString* service = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageServiceKey];
if(service != nil)
textView.text = [textView.text stringByAppendingFormat:@"service:%@n",service];
}
//读取电话多值
ABMultiValueRef phone = ABRecordCopyValue(person, kABPersonPhoneProperty);
for (int k = 0; k<ABMultiValueGetCount(phone); k++)
{
//获取电话Label
NSString * personPhoneLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phone, k));
//获取該Label下的电话值
NSString * personPhone = (NSString*)ABMultiValueCopyValueAtIndex(phone, k);
textView.text = [textView.text stringByAppendingFormat:@"%@:%@n",personPhoneLabel,personPhone];
}
//获取URL多值
ABMultiValueRef url = ABRecordCopyValue(person, kABPersonURLProperty);
for (int m = 0; m < ABMultiValueGetCount(url); m++)
{
//获取电话Label
NSString * urlLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(url, m));
//获取該Label下的电话值
NSString * urlContent = (NSString*)ABMultiValueCopyValueAtIndex(url,m);
textView.text = [textView.text stringByAppendingFormat:@"%@:%@n",urlLabel,urlContent];
}
//读取照片
NSData *image = (NSData*)ABPersonCopyImageData(person);
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(200, 0, 50, 50)];
[myImage setImage:[UIImage imageWithData:image]];
myImage.opaque = YES;
[textView addSubview:myImage];
}
CFRelease(results);
CFRelease(addressBook);
分享到:
相关推荐
总的来说,iOS获取通讯录的过程包括请求权限、获取联系人信息以及展示这些信息。开发者需要注意尊重用户的隐私权,合理地请求和使用权限,同时提供清晰的提示和反馈。通过熟练掌握这些知识,你就能在iOS应用中实现...
总结来说,iOS获取通讯录有两种方式:带有UI的ABPeoplePickerNavigationController/CNContactPickerViewController,适合快速集成但限制较多;无UI的CNContactStore方法则能提供更高的灵活性,适合需要自定义界面和...
综上所述,"ios-获取通讯录信息.zip"项目提供了一个学习和实践iOS获取通讯录信息的平台。通过分析和运行该项目,开发者能够了解并掌握iOS系统功能中关于访问通讯录的核心知识点,进一步提升自己的iOS开发技能。
在iOS平台上,获取通讯录是开发过程中常见的需求,主要用于实现如联系人同步、备份或特定功能的个性化。本文将详细讲解如何使用Objective-C或Swift语言来获取iOS设备上的通讯录,并将单个联系人信息存储到数组中。 ...
在iOS9中,苹果引入了全新的Contacts框架,以替换之前的AddressBook框架,为开发者提供了更加高效、安全且灵活的方式来访问和管理用户的联系人信息。这个Demo项目“iOS9 通讯录新框架Demo”旨在演示如何利用这个新...
本篇文章将详细介绍一种最新的、经过真机测试可用的iOS获取通讯录的方法。 首先,我们需要了解iOS系统对访问用户数据的严格控制。自iOS 6开始,苹果引入了权限管理系统,应用需要获取用户的明确授权才能访问通讯录...
在iOS平台上,获取通讯录是开发过程中常见的需求,主要用于实现联系人管理、社交应用等功能。本文将详细探讨两种主流的获取iOS设备通讯录的方式,并强调它们的兼容性。 第一种方式是使用`Contacts Framework`。从...
本文将深入探讨如何在iOS中实现“iOS获取通讯录按字母排序索引列表”的功能,主要涉及`AddressBook`框架的使用。 首先,我们需要了解`AddressBook`框架。这是Apple提供的一个核心库,用于访问和管理设备上的联系人...
例如,在Android中,通过调用`uni.getContact`方法并监听返回的联系人列表来获取通讯录;在iOS中,需使用`uni.authorize`获取权限,然后调用`uni.chooseAddress`获取联系人信息。需要注意的是,由于隐私保护政策,...
本教程将基于提供的"ios-获取通讯录列表.zip"压缩包,深入讲解如何在iOS应用中请求用户权限并获取其通讯录列表。该示例项目"LXAddressBookDemo"是一个GitHub上的开源代码库,它演示了这一过程。 首先,我们需要了解...
2024最新获取通讯录和短信系统源码 开发仅供测试研究使用,请勿非法使用!!!! 拥有自由操作度最好的后台,APP前端样式一键修改。 去除过多授权提醒,提高用户信息获取率。 优化业务系统后台管理员与代理的...
ios 操作通讯录联系人demo大全
// 用户已授权,可以开始获取通讯录 } else { // 用户未授权,展示错误或提示信息 } } ``` 当获取到权限后,你可以创建一个`CNContactStore`实例,用于执行查询和操作。通过这个实例,你可以使用`...
总之,iOS获取通讯录涉及到AddressBook框架、权限管理以及对联系人属性的访问。通过这些技术,开发者可以为用户提供如查看、管理通讯录等服务,但必须始终尊重并保护用户的隐私。在实际开发中,应遵守Apple的App ...
【标题】:“双端完美获取通讯录系统源码”指的是一个设计用于在不同终端上(如iOS和Android)高效、完整地获取并管理用户通讯录的软件系统。这个系统的核心功能在于提供跨平台的支持,使得用户能够在手机或电脑等...
在iOS开发中,通讯录是应用常常需要交互的重要部分,特别是在个人信息管理或者社交类应用中。这个名为"ios-通讯录.zip"的压缩包显然包含了关于如何在iOS应用中自定义头像并修改通讯录内容的示例代码或资源。让我们...
iOS 获取手机通讯录的demo,很方便集成到项目,几行代码就可轻松调用 AddressBook *addressBook = [AddressBook shareAddressBook]; addressBook.delegate = self; [addressBook ...
对于iOS 10及更高版本,尤其要注意在首次尝试访问通讯录时向用户解释为何需要这些权限,以及你的应用将如何使用这些信息。此外,要定期更新代码以适应新版本的系统和API变化,以保持应用的兼容性和稳定性。
在iOS开发中,获取设备通讯录是一项常见的任务,这通常涉及到使用`Contacts`框架。`Contacts`框架提供了访问和管理用户联系人的方式,包括姓名、电话号码、电子邮件地址等信息。在标题“iOS设备通讯录获取,及其他小...
总结一下,iOS获取系统通讯录涉及到以下几个关键知识点: 1. 遵守iOS的隐私权限管理,使用`Contacts框架`请求访问通讯录的权限。 2. 使用`CNContactStore`查询、创建、更新和删除联系人。 3. 通过`CNContact`和`...