`
icheng
  • 浏览: 882015 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
文章分类
社区版块
存档分类
最新评论

获得通讯录中联系人的所有属性

 
阅读更多

获得通讯录中联系人的所有属性 ,看代码:

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批量导入联系人到手机通讯录

    在Android平台上,批量导入联系人至手机通讯录是一项常见的需求,尤其对于企业用户或需要整理大量联系信息的个人而言。本教程将详细讲解如何通过线程池模式实现这一功能,确保即使处理5000个联系人也不会出现内存...

    iOS9 通讯录新框架Demo

    6. **处理联系人属性**:CNContact类提供了丰富的属性,如name(姓名)、phoneNumbers(电话号码)、emailAddresses(电子邮件地址)等,可以根据需求读取或设置。 7. **联系人分组**:Contacts框架还支持对联系人...

    java制作的通讯录

    查看通讯录信息,即展示所有联系人,可以通过执行SQL的SELECT语句来实现,将查询结果转换成用户友好的格式进行显示。查询功能则允许用户根据姓名或其他条件搜索特定联系人,这可能需要使用到SQL的WHERE子句。而增加...

    \MFC单文档制作通讯录.zip

    4. **数据存储**:通讯录需要存储联系人信息,可以选择结构体或类来表示一个联系人,然后使用STL容器(如vector或list)或者数据库来保存所有联系人。MFC提供了对数据库的支持,可以使用CDatabase和CRecordset类与...

    iOS通讯录demo

    在iOS开发中,通讯录是应用中不可或缺的一部分,它允许用户管理他们的联系人信息,包括姓名、电话号码、电子邮件地址等。本示例项目“iOS通讯录Demo”提供了一个完善的解决方案,展示了如何在iOS应用中实现通讯录...

    c#通讯录源代码

    在这个通讯录应用中,WinForm控件被用来创建添加联系人、查看联系人、编辑联系人和删除联系人的界面。 文件读写是该项目的核心功能之一。在C#中,我们可以使用`System.IO`命名空间中的类来实现这一操作。例如,`...

    ios-电话通讯录-Demo.zip

    4. **联系人属性**: `CNContact`类代表了一个联系人,包含了丰富的属性,如名字、姓氏、电话号码、电子邮件地址等。你可以根据需求获取这些属性值。 5. **排序联系人**: 获取到联系人列表后,可以按照不同的...

    类似于iPhone上面的通讯录

    这涉及到对用户联系人数据的管理和展示,包括增加新联系人、删除现有联系人、修改联系人信息以及为联系人添加头像等操作。在iOS中,苹果提供了一个强大的框架——Contacts Framework,用于处理与系统通讯录相关的...

    基于c++通讯录管理系统

    通讯录管理系统是一种常见的软件应用,它能够帮助用户存储、管理和查找联系人的信息。在这个项目中,我们利用C++编程语言来设计和实现这样一个系统,这对于C++初学者来说是一个很好的实践机会。通过这个项目,我们...

    ios 获取通讯录的代码

    在iOS平台上,获取通讯录是开发过程中常见的需求,主要用于实现如联系人同步、备份或特定功能的个性化。本文将详细讲解如何使用Objective-C或Swift语言来获取iOS设备上的通讯录,并将单个联系人信息存储到数组中。 ...

    通讯录管理系统(java)

    通过定义Contact类来表示联系人信息,包含各种属性如name、phone、email等,并提供相应的get和set方法来访问和修改这些属性。同时,可以利用继承来扩展特定类型的联系人,例如公司联系人可能包括部门和职务等额外...

    ios开发之 通讯录

    3. 访问通讯录:如果用户授权,我们可以通过`CNContactStore`的`unifiedContacts`方法获取所有联系人。这是一个异步操作,通常在`requestAccess`的回调中执行。 ```swift let keysToFetch = ...

    用MFC做的通讯录 相当简单

    通讯录应用的核心功能包括添加联系人、修改联系人信息,这些功能在我们的"telbook"程序中得到了实现。下面我们将详细探讨这两个关键知识点。 1. **MFC框架的理解与应用**: MFC是基于Windows的消息驱动模型,通过...

    实现了大部分功能的通讯录

    `keysToFetch`参数用于指定希望获取的联系人属性,如姓名、电话号码、电子邮件等。 4. **写入联系人**:添加新联系人或更新现有联系人,可以创建`CNMutableContact`对象,设置其属性,然后调用`CNContactStore.save...

    swift-一行代码获取按A~Z分组精准排序的通讯录联系人Swift版

    这个“swift-一行代码获取按A~Z分组精准排序的通讯录联系人Swift版”项目提供了一个简洁高效的方法来实现这一功能。在iOS应用中,通常会使用`Contacts`框架来访问通讯录,并通过`UITableView`或`UICollectionView`...

    iOS9 通讯录新框架Contact Demo

    八、联系人属性键 Contacts框架提供了许多预定义的属性键,如CNLabelPhoneNumberMobile,CNLabelHome等,用于获取或设置联系人的特定属性。开发者也可以自定义属性键来扩展联系人信息。 九、同步和异步操作 ...

    java编写的简单手机通讯录

    在这个通讯录系统中,XML文件被用作存储通讯录数据的载体,每个联系人信息作为一个节点,包含姓名、电话、邮箱等字段。通过DOM(Document Object Model)或SAX(Simple API for XML)解析器,我们可以方便地读取、...

    ios-获取通讯录列表.zip

    在iOS开发中,获取用户通讯录是常见的需求,例如实现联系人同步或社交应用的功能。本教程将基于提供的"ios-获取通讯录列表.zip"压缩包,深入讲解如何在iOS应用中请求用户权限并获取其通讯录列表。该示例项目...

    ios-读取手机通讯录.zip

    这里的`CNContactKey`用于指定你想获取哪些联系人属性,比如名字、电话号码等。得到的联系人集合可以进一步处理,例如展示在列表中。 在实际应用中,可能还需要对获取的联系人进行筛选或过滤,例如只显示有电话号码...

    简单的通讯录代码

    每个联系人信息可能被封装在独立的对象中,具有属性(如name、phone、email)和方法(如getter和setter)。 2. **集合框架**:为了存储多个联系人,代码可能会使用Java的集合框架,如ArrayList或HashMap来组织和...

Global site tag (gtag.js) - Google Analytics