ios开发之获得手机通讯录中所有联系人的属性

001ABAddressBookRef addressBook = ABAddressBookCreate();
002  
003    CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook);
004      
005    for(int i = 0; i < CFArrayGetCount(results); i++)
006    {
007        ABRecordRef person = CFArrayGetValueAtIndex(results, i);
008        //读取firstname
009        NSString *personName = (NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
010        if(personName != nil)
011            textView.text = [textView.text stringByAppendingFormat:@"\n姓名:%@\n",personName];
012        //读取lastname
013        NSString *lastname = (NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);
014        if(lastname != nil)
015            textView.text = [textView.text stringByAppendingFormat:@"%@\n",lastname];
016        //读取middlename
017        NSString *middlename = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNameProperty);
018        if(middlename != nil)
019            textView.text = [textView.text stringByAppendingFormat:@"%@\n",middlename];
020        //读取prefix前缀
021        NSString *prefix = (NSString*)ABRecordCopyValue(person, kABPersonPrefixProperty);
022        if(prefix != nil)
023            textView.text = [textView.text stringByAppendingFormat:@"%@\n",prefix];
024        //读取suffix后缀
025        NSString *suffix = (NSString*)ABRecordCopyValue(person, kABPersonSuffixProperty);
026        if(suffix != nil)
027            textView.text = [textView.text stringByAppendingFormat:@"%@\n",suffix];
028        //读取nickname呢称
029        NSString *nickname = (NSString*)ABRecordCopyValue(person, kABPersonNicknameProperty);
030        if(nickname != nil)
031            textView.text = [textView.text stringByAppendingFormat:@"%@\n",nickname];
032        //读取firstname拼音音标
033        NSString *firstnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonFirstNamePhoneticProperty);
034        if(firstnamePhonetic != nil)
035            textView.text = [textView.text stringByAppendingFormat:@"%@\n",firstnamePhonetic];
036        //读取lastname拼音音标
037        NSString *lastnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonLastNamePhoneticProperty);
038        if(lastnamePhonetic != nil)
039            textView.text = [textView.text stringByAppendingFormat:@"%@\n",lastnamePhonetic];
040        //读取middlename拼音音标
041        NSString *middlenamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNamePhoneticProperty);
042        if(middlenamePhonetic != nil)
043            textView.text = [textView.text stringByAppendingFormat:@"%@\n",middlenamePhonetic];
044        //读取organization公司
045        NSString *organization = (NSString*)ABRecordCopyValue(person, kABPersonOrganizationProperty);
046        if(organization != nil)
047            textView.text = [textView.text stringByAppendingFormat:@"%@\n",organization];
048        //读取jobtitle工作
049        NSString *jobtitle = (NSString*)ABRecordCopyValue(person, kABPersonJobTitleProperty);
050        if(jobtitle != nil)
051            textView.text = [textView.text stringByAppendingFormat:@"%@\n",jobtitle];
052        //读取department部门
053        NSString *department = (NSString*)ABRecordCopyValue(person, kABPersonDepartmentProperty);
054        if(department != nil)
055            textView.text = [textView.text stringByAppendingFormat:@"%@\n",department];
056        //读取birthday生日
057        NSDate *birthday = (NSDate*)ABRecordCopyValue(person, kABPersonBirthdayProperty);
058        if(birthday != nil)
059            textView.text = [textView.text stringByAppendingFormat:@"%@\n",birthday];
060        //读取note备忘录
061        NSString *note = (NSString*)ABRecordCopyValue(person, kABPersonNoteProperty);
062        if(note != nil)
063            textView.text = [textView.text stringByAppendingFormat:@"%@\n",note];
064        //第一次添加该条记录的时间
065        NSString *firstknow = (NSString*)ABRecordCopyValue(person, kABPersonCreationDateProperty);
066        NSLog(@"第一次添加该条记录的时间%@\n",firstknow);
067        //最后一次修改該条记录的时间
068        NSString *lastknow = (NSString*)ABRecordCopyValue(person, kABPersonModificationDateProperty);
069        NSLog(@"最后一次修改該条记录的时间%@\n",lastknow);
070          
071        //获取email多值
072        ABMultiValueRef email = ABRecordCopyValue(person, kABPersonEmailProperty);
073        int emailcount = ABMultiValueGetCount(email);    
074        for (int x = 0; x < emailcount; x++)
075        {
076            //获取email Label
077            NSString* emailLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(email, x));
078            //获取email值
079            NSString* emailContent = (NSString*)ABMultiValueCopyValueAtIndex(email, x);
080            textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",emailLabel,emailContent];
081        }
082        //读取地址多值
083        ABMultiValueRef address = ABRecordCopyValue(person, kABPersonAddressProperty);
084        int count = ABMultiValueGetCount(address);    
085          
086        for(int j = 0; j < count; j++)
087        {
088            //获取地址Label
089            NSString* addressLabel = (NSString*)ABMultiValueCopyLabelAtIndex(address, j);
090            textView.text = [textView.text stringByAppendingFormat:@"%@\n",addressLabel];
091            //获取該label下的地址6属性
092            NSDictionary* personaddress =(NSDictionary*) ABMultiValueCopyValueAtIndex(address, j);        
093            NSString* country = [personaddress valueForKey:(NSString *)kABPersonAddressCountryKey];
094            if(country != nil)
095                textView.text = [textView.text stringByAppendingFormat:@"国家:%@\n",country];
096            NSString* city = [personaddress valueForKey:(NSString *)kABPersonAddressCityKey];
097            if(city != nil)
098                textView.text = [textView.text stringByAppendingFormat:@"城市:%@\n",city];
099            NSString* state = [personaddress valueForKey:(NSString *)kABPersonAddressStateKey];
100            if(state != nil)
101                textView.text = [textView.text stringByAppendingFormat:@"省:%@\n",state];
102            NSString* street = [personaddress valueForKey:(NSString *)kABPersonAddressStreetKey];
103            if(street != nil)
104                textView.text = [textView.text stringByAppendingFormat:@"街道:%@\n",street];
105            NSString* zip = [personaddress valueForKey:(NSString *)kABPersonAddressZIPKey];
106            if(zip != nil)
107                textView.text = [textView.text stringByAppendingFormat:@"邮编:%@\n",zip];    
108            NSString* coutntrycode = [personaddress valueForKey:(NSString *)kABPersonAddressCountryCodeKey];
109            if(coutntrycode != nil)
110                textView.text = [textView.text stringByAppendingFormat:@"国家编号:%@\n",coutntrycode];    
111        }
112          
113        //获取dates多值
114        ABMultiValueRef dates = ABRecordCopyValue(person, kABPersonDateProperty);
115        int datescount = ABMultiValueGetCount(dates);    
116        for (int y = 0; y < datescount; y++)
117        {
118            //获取dates Label
119            NSString* datesLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(dates, y));
120            //获取dates值
121            NSString* datesContent = (NSString*)ABMultiValueCopyValueAtIndex(dates, y);
122            textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",datesLabel,datesContent];
123        }
124        //获取kind值
125        CFNumberRef recordType = ABRecordCopyValue(person, kABPersonKindProperty);
126        if (recordType == kABPersonKindOrganization) {
127            // it's a company
128            NSLog(@"it's a company\n");
129        } else {
130            // it's a person, resource, or room
131            NSLog(@"it's a person, resource, or room\n");
132        }
133          
134          
135        //获取IM多值
136        ABMultiValueRef instantMessage = ABRecordCopyValue(person, kABPersonInstantMessageProperty);
137        for (int l = 1; l < ABMultiValueGetCount(instantMessage); l++)
138        {
139            //获取IM Label
140            NSString* instantMessageLabel = (NSString*)ABMultiValueCopyLabelAtIndex(instantMessage, l);
141            textView.text = [textView.text stringByAppendingFormat:@"%@\n",instantMessageLabel];
142            //获取該label下的2属性
143            NSDictionary* instantMessageContent =(NSDictionary*) ABMultiValueCopyValueAtIndex(instantMessage, l);        
144            NSString* username = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageUsernameKey];
145            if(username != nil)
146                textView.text = [textView.text stringByAppendingFormat:@"username:%@\n",username];
147              
148            NSString* service = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageServiceKey];
149            if(service != nil)
150                textView.text = [textView.text stringByAppendingFormat:@"service:%@\n",service];            
151        }
152          
153        //读取电话多值
154        ABMultiValueRef phone = ABRecordCopyValue(person, kABPersonPhoneProperty);
155        for (int k = 0; k<ABMultiValueGetCount(phone); k++)
156        {
157            //获取电话Label
158            NSString * personPhoneLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phone, k));
159            //获取該Label下的电话值
160            NSString * personPhone = (NSString*)ABMultiValueCopyValueAtIndex(phone, k);
161                  
162            textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",personPhoneLabel,personPhone];
163        }
164          
165        //获取URL多值
166        ABMultiValueRef url = ABRecordCopyValue(person, kABPersonURLProperty);
167        for (int m = 0; m < ABMultiValueGetCount(url); m++)
168        {
169            //获取电话Label
170            NSString * urlLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(url, m));
171            //获取該Label下的电话值
172            NSString * urlContent = (NSString*)ABMultiValueCopyValueAtIndex(url,m);
173              
174            textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",urlLabel,urlContent];
175        }
176          
177        //读取照片
178        NSData *image = (NSData*)ABPersonCopyImageData(person);
179              
180  
181        UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(200, 0, 50, 50)];
182        [myImage setImage:[UIImage imageWithData:image]];
183        myImage.opaque = YES;
184        [textView addSubview:myImage];
185          
186  
187      
188    }
189      
190    CFRelease(results);
191    CFRelease(addressBook);

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值