【问题标题】:Programmatically Request Access to Contacts in iOS 6 and later [duplicate]以编程方式请求访问 iOS 6 及更高版本中的联系人 [重复]
【发布时间】:2013-02-02 22:52:41
【问题描述】:

如何在 iOS 6 及更高版本中访问联系人? 我认为它需要一些许可。 谁能告诉我如何以编程方式请求权限?

【问题讨论】:

标签: iphone contacts


【解决方案1】:

当您尝试通过代码访问通讯录时,iOS 会立即要求用户进行访问。

您无法请求许可,因为 iOS 会为您处理。

您可以使用ABAddressBookGetAuthorizationStatus 方法检查权限状态,您需要将AddressBook.framework 添加到您的项目中,并将#import <AddressBook/AddressBook.h> 添加到您要使用的.h.m 文件中方法。

ABAuthorizationStatus status = ABAddressBookGetAuthorizationStatus();
if(status == kABAuthorizationStatusDenied) {
// User has reject your request to access the address book  
}

【讨论】:

  • 这是错误的。在 iOS 6 上使用地址簿之前,您应该请求访问地址簿。
  • 如果您只使用AddressBookUI.framework 并没有错,您只需打开ABPeoplePickerNavigationController,它就会为您请求访问权限。\
  • 是的,但是当您以编程方式访问通讯簿时,OP 想知道如何请求访问权限,而无需 AddressBookUI:Could anyone tell me how to request for permission programmatically?
【解决方案2】:
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {
    ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) {
        if (granted) {
            NSLog(@"Access granted!");
        } else {
            NSLog(@"Access denied!");
        }
    });
}

编辑:
这个答案稍微详细一点:https://stackoverflow.com/a/12648938/322548

【讨论】:

    猜你喜欢
    • 2013-10-20
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 2012-01-14
    相关资源
    最近更新 更多