获得通讯录中联系人的所有属性 ,看代码:
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++)
{
//获取emailLabel
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 company\n");
} else
{
//
it's a person, resource, or room
NSLog(@"it's
a person, resource, or room\n");
}
//获取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];
}
//读取电话多值
ABMultiValueRefphone=
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);
分享到:
相关推荐
在Android平台上,批量导入联系人至手机通讯录是一项常见的需求,尤其对于企业用户或需要整理大量联系信息的个人而言。本教程将详细讲解如何通过线程池模式实现这一功能,确保即使处理5000个联系人也不会出现内存...
6. **处理联系人属性**:CNContact类提供了丰富的属性,如name(姓名)、phoneNumbers(电话号码)、emailAddresses(电子邮件地址)等,可以根据需求读取或设置。 7. **联系人分组**:Contacts框架还支持对联系人...
查看通讯录信息,即展示所有联系人,可以通过执行SQL的SELECT语句来实现,将查询结果转换成用户友好的格式进行显示。查询功能则允许用户根据姓名或其他条件搜索特定联系人,这可能需要使用到SQL的WHERE子句。而增加...
4. **数据存储**:通讯录需要存储联系人信息,可以选择结构体或类来表示一个联系人,然后使用STL容器(如vector或list)或者数据库来保存所有联系人。MFC提供了对数据库的支持,可以使用CDatabase和CRecordset类与...
在iOS开发中,通讯录是应用中不可或缺的一部分,它允许用户管理他们的联系人信息,包括姓名、电话号码、电子邮件地址等。本示例项目“iOS通讯录Demo”提供了一个完善的解决方案,展示了如何在iOS应用中实现通讯录...
在这个通讯录应用中,WinForm控件被用来创建添加联系人、查看联系人、编辑联系人和删除联系人的界面。 文件读写是该项目的核心功能之一。在C#中,我们可以使用`System.IO`命名空间中的类来实现这一操作。例如,`...
4. **联系人属性**: `CNContact`类代表了一个联系人,包含了丰富的属性,如名字、姓氏、电话号码、电子邮件地址等。你可以根据需求获取这些属性值。 5. **排序联系人**: 获取到联系人列表后,可以按照不同的...
这涉及到对用户联系人数据的管理和展示,包括增加新联系人、删除现有联系人、修改联系人信息以及为联系人添加头像等操作。在iOS中,苹果提供了一个强大的框架——Contacts Framework,用于处理与系统通讯录相关的...
通讯录管理系统是一种常见的软件应用,它能够帮助用户存储、管理和查找联系人的信息。在这个项目中,我们利用C++编程语言来设计和实现这样一个系统,这对于C++初学者来说是一个很好的实践机会。通过这个项目,我们...
在iOS平台上,获取通讯录是开发过程中常见的需求,主要用于实现如联系人同步、备份或特定功能的个性化。本文将详细讲解如何使用Objective-C或Swift语言来获取iOS设备上的通讯录,并将单个联系人信息存储到数组中。 ...
通过定义Contact类来表示联系人信息,包含各种属性如name、phone、email等,并提供相应的get和set方法来访问和修改这些属性。同时,可以利用继承来扩展特定类型的联系人,例如公司联系人可能包括部门和职务等额外...
3. 访问通讯录:如果用户授权,我们可以通过`CNContactStore`的`unifiedContacts`方法获取所有联系人。这是一个异步操作,通常在`requestAccess`的回调中执行。 ```swift let keysToFetch = ...
通讯录应用的核心功能包括添加联系人、修改联系人信息,这些功能在我们的"telbook"程序中得到了实现。下面我们将详细探讨这两个关键知识点。 1. **MFC框架的理解与应用**: MFC是基于Windows的消息驱动模型,通过...
`keysToFetch`参数用于指定希望获取的联系人属性,如姓名、电话号码、电子邮件等。 4. **写入联系人**:添加新联系人或更新现有联系人,可以创建`CNMutableContact`对象,设置其属性,然后调用`CNContactStore.save...
这个“swift-一行代码获取按A~Z分组精准排序的通讯录联系人Swift版”项目提供了一个简洁高效的方法来实现这一功能。在iOS应用中,通常会使用`Contacts`框架来访问通讯录,并通过`UITableView`或`UICollectionView`...
八、联系人属性键 Contacts框架提供了许多预定义的属性键,如CNLabelPhoneNumberMobile,CNLabelHome等,用于获取或设置联系人的特定属性。开发者也可以自定义属性键来扩展联系人信息。 九、同步和异步操作 ...
在这个通讯录系统中,XML文件被用作存储通讯录数据的载体,每个联系人信息作为一个节点,包含姓名、电话、邮箱等字段。通过DOM(Document Object Model)或SAX(Simple API for XML)解析器,我们可以方便地读取、...
在iOS开发中,获取用户通讯录是常见的需求,例如实现联系人同步或社交应用的功能。本教程将基于提供的"ios-获取通讯录列表.zip"压缩包,深入讲解如何在iOS应用中请求用户权限并获取其通讯录列表。该示例项目...
这里的`CNContactKey`用于指定你想获取哪些联系人属性,比如名字、电话号码等。得到的联系人集合可以进一步处理,例如展示在列表中。 在实际应用中,可能还需要对获取的联系人进行筛选或过滤,例如只显示有电话号码...
每个联系人信息可能被封装在独立的对象中,具有属性(如name、phone、email)和方法(如getter和setter)。 2. **集合框架**:为了存储多个联系人,代码可能会使用Java的集合框架,如ArrayList或HashMap来组织和...