以编程方式获取手机号码

时间:2013-11-25 09:56:08

标签: 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");
}

3 个答案:

答案 0 :(得分:3)

您可以使用以下代码获取所有电话条目。 我还指定了几种类型的手机类型,让您了解如何处理它。

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);

答案 1 :(得分:0)

您可以使用以下代码

获取电话号码
 ABMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty);

答案 2 :(得分:0)

试试这个

  ABAddressBookRef addressBook = ABAddressBookCreate(); 

  CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);

  CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
  for(int i = 0; i < nPeople; i++) 
  { 
      //  Getting the person record ... 
       ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i); 
       ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);

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

       }
       CFRelease(phones);
  }
  CFRelease(allPeople);
  CFRelease(addressBook);