如何在iPhone中以编程方式打开地址簿?

时间:2012-12-05 05:33:01

标签: ios objective-c iphone

我正在使用地址簿应用程序。在这里,我创建了一些方法,可以将联系人添加到地址簿,并使用该人的记录更新本地地址簿中的联系人。

但我面临的问题是,点击一下按钮,我想打开所选人员的本地地址簿。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

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];
}