Ios 如何使用授权访问以编程方式从通讯簿获取电子邮件地址?(目标C)
如何使用授权访问以编程方式从通讯簿中读取电子邮件地址?我知道这可以通过ABPeoplePicker的帮助实现,但是我正在寻找一种不涉及任何GUI的方法 有人能帮我解决这个问题吗?Ios 如何使用授权访问以编程方式从通讯簿获取电子邮件地址?(目标C),ios,objective-c,addressbook,abpeoplepickerview,Ios,Objective C,Addressbook,Abpeoplepickerview,如何使用授权访问以编程方式从通讯簿中读取电子邮件地址?我知道这可以通过ABPeoplePicker的帮助实现,但是我正在寻找一种不涉及任何GUI的方法 有人能帮我解决这个问题吗?CFErrorRef error=NULL; CFErrorRef error = NULL; ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error); __block BOOL access
CFErrorRef error=NULL;
CFErrorRef error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
__block BOOL accessGranted = NO;
if (ABAddressBookRequestAccessWithCompletion != NULL)
{
// we're on iOS 6
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error)
{
accessGranted = granted;
dispatch_semaphore_signal(sema);
});
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
}
else
{ // we're on iOS 5 or older
accessGranted = YES;
}
if (accessGranted)
{
NSArray *allContacts = (__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);
NSLog(@"People Count :- %d", (int)[allContacts count]);
for (int i = 0 ; i < [allContacts count] ; i++)
{
ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i];
ABMultiValueRef emails = ABRecordCopyValue(contactPerson, kABPersonEmailProperty);
NSUInteger j = 0;
for (j = 0; j < ABMultiValueGetCount(emails); j++)
{
NSString *email = (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(emails, j);
if (j == 0)
NSLog(@"Person Home Email = %@ ", email);
else if (j==1)
NSLog(@"Person Work Email = %@ ", email);
emailAddressList = [[EmailAddressList alloc] init];
emailAddressList.strEmailAddress = email;
emailAddressList.strEmailAddressType = @"AddressBook";
[emailAddressList InsertRecordForEmailAddress:emailAddressList];
}
}
}
ABAddressBookRef addressBook=ABAddressBookCreateWithOptions(NULL,错误(&R);
__block BOOL accessgrated=否;
if(ABAddressBookRequestAccessWithCompletion!=NULL)
{
//我们在iOS 6上
dispatch\u semaphore\u t sema=dispatch\u semaphore\u create(0);
ABAddressBookRequestAccessWithCompletion(addressBook,^(已授予bool,CFErrorRef错误)
{
accessgrated=已授予;
调度信号量信号(sema);
});
调度信号量等待(永远调度时间);
}
其他的
{//我们使用的是iOS 5或更高版本
accessgrated=是;
}
如果(已授予访问权限)
{
NSArray*所有联系人=(u_u桥u传输NSArray*)ABAddressBookCopyArrayFallPeople(addressBook);
NSLog(@“人员计数:-%d”,(int)[所有联系人计数];
对于(int i=0;i<[allContacts count];i++)
{
ABRecordRef contactPerson=(桥ABRecordRef)所有联系人[i];
ABMultiValueRef emails=ABRecordCopyValue(联系人,kABPersonEmailProperty);
整数j=0;
对于(j=0;j
此代码向我显示了一个名为“使用未声明的标识符emailaddresslist”的错误。请列出我要执行的操作,以及任何建议