ios开发系列之系统通讯录的相关操作

获取系统通讯录的访问权限及相关信息

首先导入AddressBook.framework框架
1)获得系统通讯录的实例

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);// 第一个参数是预留参数

2)获得访问通讯录的权限

ABAddressBookRequestAccessWithCompletion(addressBook, nil);  //第二个参数是是否访问成功以及错误信息

3)获得系统通讯录中的所有联系人信息

NSArray *array = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);
ABRecordRef record = array[i];//通过此方法来调出每一个联系人信息
NSString * str = ABRecordCopyValue(record, ABPropertyID property); //根据property 来获得具体信息
NSString *allName = (NSString *)ABRecordCopyCompositeName(record);//获取联系人全名  
ABPropertyID 有:
// Property keys
AB_EXTERN const ABPropertyID kABPersonFirstNameProperty;          // First name - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonLastNameProperty;           // Last name - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonMiddleNameProperty;         // Middle name - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonPrefixProperty;             // Prefix ("Sir" "Duke" "General") - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonSuffixProperty;             // Suffix ("Jr." "Sr." "III") - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonNicknameProperty;           // Nickname - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonFirstNamePhoneticProperty;  // First name Phonetic - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonLastNamePhoneticProperty;   // Last name Phonetic - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonMiddleNamePhoneticProperty; // Middle name Phonetic - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonOrganizationProperty;       // Company name - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonJobTitleProperty;           // Job Title - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonDepartmentProperty;         // Department name - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonEmailProperty;              // Email(s) - kABMultiStringPropertyType
AB_EXTERN const ABPropertyID kABPersonBirthdayProperty;           // Birthday associated with this person - kABDateTimePropertyType
AB_EXTERN const ABPropertyID kABPersonNoteProperty;               // Note - kABStringPropertyType
AB_EXTERN const ABPropertyID kABPersonCreationDateProperty;       // Creation Date (when first saved)
AB_EXTERN const ABPropertyID kABPersonModificationDateProperty;   // Last saved date
// Addresses
AB_EXTERN const ABPropertyID kABPersonAddressProperty;            // Street address - kABMultiDictionaryPropertyType
// Dates
AB_EXTERN const ABPropertyID kABPersonDateProperty;               // Dates associated with this person - kABMultiDatePropertyType
// Kind
AB_EXTERN const ABPropertyID kABPersonKindProperty;               // Person/Organization - kABIntegerPropertyType
// Phone numbers
AB_EXTERN const ABPropertyID kABPersonPhoneProperty;              // Generic phone number - kABMultiStringPropertyType
// IM
AB_EXTERN const ABPropertyID kABPersonInstantMessageProperty;     // Instant Messaging - kABMultiDictionaryPropertyType
// URLs
AB_EXTERN const ABPropertyID kABPersonURLProperty;                // URL - kABMultiStringPropertyType
// Social Profile
AB_EXTERN const ABPropertyID kABPersonSocialProfileProperty       // kABMultiDictionaryPropertyType

获取系统通讯录UI界面以及ABPeoplePickerNavigationControllerDelegate

首先导入AddressBookUI.frameworkAddressBook.framework两个框架
1.获取系统通讯录的视图控制器实例

ABPeoplePickerNavigationController *abVC = [[ABPeoplePickerNavigationController alloc]init];
abVC.peoplePickerDelegate = self; //设置代理

2.跳转到系统通讯录界面

#pragma mark -- 通讯录的代理方法
//点击取消按钮的时候要响应的方法
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
  /***点击取消按钮要进行的相关事件****/
}
//当点击某一个联系人的时候,会调用的方法
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{ 
    return YES;// 如果返回yes 则可以进入下一个详细页面
}
//点击联系人某一项信息的时候,会调用的方法
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
//    根据传过来的记录和属性ID 得到当前点击的属性的所有值
    ABMultiValueRef  multiValue = ABRecordCopyValue(person, property); 
//    根据identifier得到唯一的索引
    CFIndex index = ABMultiValueGetIndexForIdentifier(multiValue, identifier);  
    NSString *phone = ABMultiValueCopyValueAtIndex(multiValue, index);  
    NSLog(@"得到的电话号码=====%@",phone);   
    return YES;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值