我想在我的应用程序中显示联系人和联系人的详细信息。联系人列表以及在选择联系人的任何联系人详细信息后,将使用地址簿显示在下一页上。我正在使用IOS 6. 在此先感谢。如何在IOS中使用iPhone的联系人6
1
A
回答
7
检索下面的代码联系方式。
- (void)viewDidLoad {
[super viewDidLoad];
contactList=[[NSMutableArray alloc] init];
ABAddressBookRef m_addressbook = ABAddressBookCreate();
if (!m_addressbook) {
NSLog(@"opening address book");
}
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(m_addressbook);
CFIndex nPeople = ABAddressBookGetPersonCount(m_addressbook);
for (int i=0;i < nPeople;i++) {
NSMutableDictionary *dOfPerson=[NSMutableDictionary dictionary];
ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);
//For username and surname
ABMultiValueRef phones =(NSString*)ABRecordCopyValue(ref, kABPersonPhoneProperty);
CFStringRef firstName, lastName;
firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
lastName = ABRecordCopyValue(ref, kABPersonLastNameProperty);
[dOfPerson setObject:[NSString stringWithFormat:@"%@ %@", firstName, lastName] forKey:@"name"];
//For Email ids
ABMutableMultiValueRef eMail = ABRecordCopyValue(ref, kABPersonEmailProperty);
if(ABMultiValueGetCount(eMail) > 0) {
[dOfPerson setObject:(NSString *)ABMultiValueCopyValueAtIndex(eMail, 0) forKey:@"email"];
}
//For Phone number
NSString* mobileLabel;
for(CFIndex i = 0; i < ABMultiValueGetCount(phones); i++) {
mobileLabel = (NSString*)ABMultiValueCopyLabelAtIndex(phones, i);
if([mobileLabel isEqualToString:(NSString *)kABPersonPhoneMobileLabel])
{
[dOfPerson setObject:(NSString*)ABMultiValueCopyValueAtIndex(phones, i) forKey:@"Phone"];
}
else if ([mobileLabel isEqualToString:(NSString*)kABPersonPhoneIPhoneLabel])
{
[dOfPerson setObject:(NSString*)ABMultiValueCopyValueAtIndex(phones, i) forKey:@"Phone"];
break ;
}
[contactList addObject:dOfPerson];
CFRelease(ref);
CFRelease(firstName);
CFRelease(lastName);
}
NSLog(@"array is %@",contactList);
}
}
0
查看Apple的AddressBook编程指南。这会给你你需要有关使用地址簿工作的所有信息 -
ABRecordID recordId;
ABAddressBookRef _addressBookRef = ABAddressBookCreate();
NSArray* allPeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(_addressBookRef);
NSString* compositeName = (NSString *)ABRecordCopyCompositeName((ABRecordRef)record);
recordId = ABRecordGetRecordID(record);
ABMultiValueRef emails = ABRecordCopyValue(record, kABPersonEmailProperty);
做适当的释放只是一个片段
+0
使用此答案。由于这是来自文档,它会真正帮助您了解有关地址簿的其他许多事情。 – Hemang
0
使用
2
添加Framwork
#import <AddressBook/AddressBook.h>
#import <AddressBook/ABPerson.h>
#import <AddressBookUI/AddressBookUI.h>
使用委托
<ABPeoplePickerNavigationControllerDelegate,ABPersonViewControllerDelegate,ABNewPersonViewControllerDelegate,ABUnknownPersonViewControllerDelegate>
可以显示通过ABPeoplePickerNavigationController
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
[[picker navigationBar] setBarStyle:UIBarStyleBlack];
picker.peoplePickerDelegate = self;
// Display only a person's phone, email, and birthdate
NSArray *displayedItems = [NSArray arrayWithObjects:[NSNumber numberWithInt:kABPersonPhoneProperty],nil];
picker.displayedProperties = displayedItems;
// Show the picker
[self presentModalViewController:picker animated:YES];
[picker release];
您联系并为您初始化,然后后,您需要使用下面的方法
#pragma mark - ABPeopelPickerNavigationController Delegate and DataSource Methods
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
[self dismissModalViewControllerAnimated:YES];
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{
// For get People detail
}
- (void)unknownPersonViewController:(ABUnknownPersonViewController *)unknownCardViewController didResolveToPerson:(ABRecordRef)person
{
}
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(ABRecordRef)person
{
}
- (BOOL)personViewController:(ABPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
return YES;
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier;
{
return YES;
}
相关问题
- 1. 同步联系人在ios 6中禁用facebook联系人
- 2. 如何获取iOS 6中的用户联系人列表?
- 3. 在ios中使用系统框架显示iPhone联系人
- 4. 如何在使用iPhone Native UI的联系人中添加联系人
- 5. 如何从iPhone联系人中仅提取WhatsApp联系人?
- 6. 无法在设备访问联系人源在iOS 6中
- 7. 如何显示联系人在IOS
- 8. 如何使用Apple联系人框架更快速地获取iOS联系人?联系人列表很长?
- 9. 如何查询IOS联系人联系人使用新联系人框架显示订单设置
- 10. 在iPhone上不使用联系人选择器的联系人列表
- 11. 获取所有iphone在iOS中的联系人与iOS 7的应用程序
- 12. 更新联系人中的联系人号码,iphone
- 13. 如何将iPhone联系人拖入UIWebView?
- 14. 如何使用Ionic联系人显示联系人图片
- 15. 如何使用联系人框架保存联系人
- 16. 如何使用联系人ID检索联系人图片
- 17. 如何在iPhone应用程序中获取GMail联系人
- 18. 无法在iPhone中使用ABGroupAddMember在组中添加联系人?
- 19. 如何在iPhone中编辑通讯录中的联系人?
- 20. Android如何使新联系人在联系人应用中打开活动
- 21. iOS 6将群组添加到联系人应用程序
- 22. 在iOS上保存联系人时发生Phonegap ContactError 6
- 23. 在Objective-C中创建iPhone联系人
- 24. 在iPhone中获取gmail联系人。?
- 25. 在iphone中检索Outlook联系人
- 26. 如何在iOS应用中获取联系人ID?
- 27. 如何在插入联系人后禁用联系人显示
- 28. 如何将联系人提取的iPhone号码与联系人姓名同步?
- 29. 如何在SalesForce中无帐号联系人联系人?
- 30. 使用ABPersonViewController在iPhone应用程序中自定义联系人
欲了解更多详情和示例代码,请点击这里.http://goo.gl/V4EYa –