如何获取iOS5中的联系人访问权限?

时间:2013-01-02 05:28:45

标签: iphone objective-c ios contacts abaddressbook

我正在创建一个与iOS5兼容的应用程序,我想在访问用户联系人列表之前获得许可。在iOS6中,我能够做到这一点,但在iOS5中,我还没有找到任何代码。我用它来访问联系人列表 -

ABAddressBookRef addressBook = ABAddressBookCreate();
    CFArrayRef all = ABAddressBookCopyArrayOfAllPeople(addressBook);
    CFIndex n = ABAddressBookGetPersonCount(addressBook);

    for( int i = 0 ; i < n ; i++ )
    {
        ABRecordRef ref = CFArrayGetValueAtIndex(all, i);
        ABMultiValueRef *phones = ABRecordCopyValue(ref, kABPersonPhoneProperty);
        for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++)
        {


            CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(phones, j);
            //CFRelease(phones);
            NSString *phoneNumber = (__bridge NSString *)phoneNumberRef;
            CFRelease(phoneNumberRef);
            // NSString *s = @"foo/bar:baz.foo";
            NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"+- *#( )"];
            phoneNumber = [[phoneNumber componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];

            NSLog(@"phone number new %@", phoneNumber);


        }
    }

请建议如何执行此操作。

1 个答案:

答案 0 :(得分:2)

由于地址簿权限要求最近才在iOS 6中添加,因此您无需请求许可。

如果您仍想这样做,那么您只需显示UIAlertView并在NSUserDefaults中记录用户的选择。

请注意,如果用户从iOS 5升级到6,则会再次询问,因此在这种情况下您必须禁用iOS 5权限对话框。