ios - 以编程方式获取手机号码

标签 ios contacts

我正在 iOS 中开发应用程序。我可以检索人的名字和姓氏,但我想要的是如何检索手机号码信息。我已经有了这段代码来获取名字和姓氏。

CFErrorRef error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);

if (addressBook != nil) {
    NSLog(@"Succesful.");


    NSArray *allContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);


    NSUInteger i = 0; for (i = 0; i < [allContacts count]; i++)
    {

        ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i];


        firstName = (__bridge_transfer NSString *)ABRecordCopyValue(contactPerson,kABPersonFirstNameProperty);
        lastName = (__bridge_transfer NSString *)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty);


        fullName = [NSString stringWithFormat:@"%@ %@", firstName, lastName];


} else {

    NSLog(@"Error Reading Address Book");
}

最佳答案

您可以使用以下代码获取所有电话条目。 我还指定了几种电话类型,以便您了解如何处理该问题。

ABMultiValueRef phoneNumbers = ABRecordCopyValue(contactPerson, kABPersonPhoneProperty);

for (CFIndex i=0; i < ABMultiValueGetCount(phoneNumbers); i++) 
{
    NSString* phoneLabel = (NSString*)ABMultiValueCopyLabelAtIndex(phoneNumbers, i);
    NSString* phoneNumber = ABMultiValueCopyValueAtIndex(phoneNumbers, i);

    if([phoneLabel isEqualToString:(NSString *)kABPersonPhoneMobileLabel])
    {

    }
    else if([phoneLabel isEqualToString:(NSString *)kABPersonPhoneIPhoneLabel])
    {

    }

    CFRelease(phoneNumber);
    CFRelease(phoneLabel);
}

CFRelease(phoneNumbers);

关于ios - 以编程方式获取手机号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20189091/

相关文章:

ios - Testflight "This build is not available for this platform"- iPad 需要 iOS

ios - 如果我将 Xcode 3.2.5 更新到 Xcode 4,这会删除旧的 iOS SDK 吗?

ios - 手动和非自适应手动转场

ios - 使用 App-prefs :root? 是否被视为私有(private) API

iphone - 限制共享联系人时打开的内容

android - 如何在android中制作全屏来电显示?

iphone - 在我的 iOS 应用程序中实现邮件

android - 如何删除联系人?

android - 我如何管理 NSMutableArray 内存

android - 如何将联系人从一个帐户复制到另一个帐户?