`
修博龙泉
  • 浏览: 318254 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ios 获取所有通讯录

ios 
阅读更多
#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>

-(void)viewDidAppear:(BOOL)animated{
    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);

}


分享到:
评论

相关推荐

    iOS 获取手机通讯录

    iOS 获取手机通讯录的demo,很方便集成到项目,几行代码就可轻松调用 AddressBook *addressBook = [AddressBook shareAddressBook]; addressBook.delegate = self; [addressBook ...

    iOS 获取本地通讯录

    // 用户已授权,可以开始获取通讯录 } else { // 用户未授权,展示错误或提示信息 } } ``` 当获取到权限后,你可以创建一个`CNContactStore`实例,用于执行查询和操作。通过这个实例,你可以使用`...

    ios-获取通讯录列表.zip

    本教程将基于提供的"ios-获取通讯录列表.zip"压缩包,深入讲解如何在iOS应用中请求用户权限并获取其通讯录列表。该示例项目"LXAddressBookDemo"是一个GitHub上的开源代码库,它演示了这一过程。 首先,我们需要了解...

    ios-获取通讯录信息.zip

    综上所述,"ios-获取通讯录信息.zip"项目提供了一个学习和实践iOS获取通讯录信息的平台。通过分析和运行该项目,开发者能够了解并掌握iOS系统功能中关于访问通讯录的核心知识点,进一步提升自己的iOS开发技能。

    ios获取系统通讯录

    总结一下,iOS获取系统通讯录涉及到以下几个关键知识点: 1. 遵守iOS的隐私权限管理,使用`Contacts框架`请求访问通讯录的权限。 2. 使用`CNContactStore`查询、创建、更新和删除联系人。 3. 通过`CNContact`和`...

    iOS两种获取通讯录方式

    在iOS平台上,获取通讯录是开发过程中常见的需求,主要用于实现联系人管理、社交应用等功能。本文将详细探讨两种主流的获取iOS设备通讯录的方式,并强调它们的兼容性。 第一种方式是使用`Contacts Framework`。从...

    ios 获取通讯录的代码

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

    iOS 获取通讯录

    总结来说,iOS获取通讯录有两种方式:带有UI的ABPeoplePickerNavigationController/CNContactPickerViewController,适合快速集成但限制较多;无UI的CNContactStore方法则能提供更高的灵活性,适合需要自定义界面和...

    uniapp获取用户通讯录外加后台系统

    例如,在Android中,通过调用`uni.getContact`方法并监听返回的联系人列表来获取通讯录;在iOS中,需使用`uni.authorize`获取权限,然后调用`uni.chooseAddress`获取联系人信息。需要注意的是,由于隐私保护政策,...

    iOS 获取系统通讯录的名字和电话【第二版】

    iOS 获取系统通讯录的名字和电话【srxboys】【第二版】 同时兼容 iOS6 / 7/8/9/10 等等 所有版本 可以看淘宝 收货地址 亲测 实现 &gt; iOS6 代码例子: //初始化对象 在viewDidLoad __weak typeof(self)weakSelf = ...

    ios开发之 通讯录

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

    iOS 获取通讯录及显示

    总的来说,iOS获取通讯录的过程包括请求权限、获取联系人信息以及展示这些信息。开发者需要注意尊重用户的隐私权,合理地请求和使用权限,同时提供清晰的提示和反馈。通过熟练掌握这些知识,你就能在iOS应用中实现...

    iOS-读取系统通讯录

    一旦获取了权限,我们就可以使用`CNContactStore`来获取通讯录中的联系人。`enumerateContacts(with:using:)`方法可以用来遍历所有联系人。通常我们会使用一个查询请求(`CNContactFetchRequest`)来指定我们想要...

    iOS获取手机通讯录方式方法(最新)

    最近学习了iOS获取手机通讯录方式方法,现在分享给大家。希望此文章对各位有所帮助。 一、iOS 9 以前的通讯录框架 AddressBookUI框架:提供了联系人列表界面、联系人详情界面、添加联系人界面等,一般用于选择联系...

    ios开发ios开发之通讯录 通过按钮调用通讯录,获得通讯录中的联系人的手机号码

    【ios开发】ios开发之通讯录 通过按钮调用通讯录,获得通讯录中的联系人的手机号码 【核心代码】 AddressBookDemo ├── AddressBookDemo │ ├── AddressBookDemo │ │ ├── AddressBookDemoAppDelegate.h │...

    iOS9 通讯录新框架Demo

    这个Demo项目“iOS9 通讯录新框架Demo”旨在演示如何利用这个新框架进行实际开发操作。让我们深入探讨一下这个框架的关键知识点。 首先,我们要了解Contacts框架的基础结构。Contacts框架主要包括以下几个核心类: ...

    ios中获取手机通讯录

    在iOS平台上,获取手机通讯录是一项常见的功能,它允许应用程序访问用户的联系人信息,并进行展示或处理。在本文中,我们将深入探讨如何在iOS中实现这一功能,以及如何将获取到的数据以表格形式呈现。 首先,为了...

    ios-iOS10访问通讯录.zip

    然后,创建一个方法来获取通讯录权限并调用block返回联系人信息: ```swift func requestAccessAndFetchContacts(completion: @escaping ContactBlock) { let store = CNContactStore() // 请求访问通讯录的...

    获取通讯录和短信系统源码 完美双端获取通讯录短信系统 通讯录管理系统源码 APP支持安卓IOS双端原生.zip

    2024最新获取通讯录和短信系统源码 开发仅供测试研究使用,请勿非法使用!!!! 拥有自由操作度最好的后台,APP前端样式一键修改。 去除过多授权提醒,提高用户信息获取率。 优化业务系统后台管理员与代理的...

    ios-获取手机通讯录,自定义cell展示,cell 左滑菜单,某条记录 置顶效果.zip

    要获取通讯录,首先需要请求用户授权(使用`CNContactStore.requestAccess(for:completionHandler:)`),然后通过`CNContactStore`查询联系人(如`CNContactStore.unifiedContacts(matching:keysToFetch:)`)并处理...

Global site tag (gtag.js) - Google Analytics