`

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

 
阅读更多

获得通讯录中联系人的所有属性 ,看代码: ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook); for(int i = 0; i CFArrayGetCount(results); i++) { ABRecord

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

    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 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];            
        }
        
        //读取电话多值
        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);

原帖地址:http://www.cocoachina.com/bbs/read.php?tid=62527&fpage=2

分享到:
评论
1 楼 w11h22j33 2012-06-21  
http://mobile.51cto.com/iphone-282982.htm

相关推荐

    Android批量导入联系人到手机通讯录

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

    iOS9 通讯录新框架Demo

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

    java制作的通讯录

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

    iOS通讯录demo

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

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

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

    类似于iPhone上面的通讯录

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

    ios 获取通讯录的代码

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

    c#通讯录源代码

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

    ios-电话通讯录-Demo.zip

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

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

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

    ios开发之 通讯录

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

    用MFC做的通讯录 相当简单

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

    通讯录管理系统(java)

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

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

    `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应用中请求用户权限并获取其通讯录列表。该示例项目...

    简单的通讯录代码

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

    获取通讯录姓名和号码

    CNContact类则包含了联系人的各项属性,如名字、电话号码等。 无论是Android还是iOS,获取通讯录数据后,通常会用到数据结构来存储这些信息,如ArrayList(Java)或NSArray(Objective-C/Swift)。同时,为了提高...

Global site tag (gtag.js) - Google Analytics