通讯录(ios自带无界面)
1,添加框架AddressBook.framework
2,请求权限认证,在Appdelegate.m文件中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/*
kABAuthorizationStatusNotDetermined = 0, 没有决定是否授权
kABAuthorizationStatusRestricted, 受限制
kABAuthorizationStatusDenied, 拒绝
kABAuthorizationStatusAuthorized 授权
*/
//请求用户授权
if(ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusNotDetermined)
{
ABAddressBookRef book=ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(book, ^(bool granted, CFErrorRef error) {
if (granted) {
NSLog(@"授权成功");
}
else
{
NSLog(@"授权失败,%@",error);
}
});
}
return YES;
}
3,控制器中实现
#import "ViewController.h"
#import <AddressBook/AddressBook.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// /*
// kABAuthorizationStatusNotDetermined = 0, 没有决定是否授权
// kABAuthorizationStatusRestricted, 受限制
// kABAuthorizationStatusDenied, 拒绝
// kABAuthorizationStatusAuthorized 授权
// */
// //请求用户授权
// if(ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusNotDetermined)
// {
// ABAddressBookRef book=ABAddressBookCreateWithOptions(NULL, NULL);
// ABAddressBookRequestAccessWithCompletion(book, ^(bool granted, CFErrorRef error) {
// if (granted) {
// NSLog(@"授权成功");
// }
// else
// {
// NSLog(@"授权失败,%@",error);
// }
// });
//
// }
}
//获取数据
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//1.创建通讯录
ABAddressBookRef book=ABAddressBookCreateWithOptions(NULL, NULL);
//获取所有联系人记录
CFArrayRef multivalues=ABAddressBookCopyArrayOfAllPeople(book);
CFIndex count=CFArrayGetCount(multivalues);
for (CFIndex i=0; i<count; ++i) {
ABRecordRef record=CFArrayGetValueAtIndex(multivalues, i);
CFStringRef first=ABRecordCopyValue(record, kABPersonFirstNameProperty);
CFStringRef last=ABRecordCopyValue(record, kABPersonLastNameProperty);
NSLog(@"%@,%@",(__bridge_transfer NSString*)first,(__bridge_transfer NSString*)last);
ABMultiValueRef multiPhones=ABRecordCopyValue(record, kABPersonPhoneProperty);
CFIndex countPhone=ABMultiValueGetCount(multiPhones);
for (int j=0; j<countPhone; j++) {
CFStringRef phone=ABMultiValueCopyValueAtIndex(multiPhones, j);
NSLog(@"phone=%@",(__bridge_transfer NSString*)phone);
}
CFRelease(multiPhones);
}
CFRelease(multivalues);
CFRelease(book);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
通讯录(ios自带无界面)的更多相关文章
- Jenkins构建自动化脚本执行无界面解决方法
场景: jenkins构建selenium自动化用例的时候,会有jenkins自带服务后台运行自动化脚本,可无界面运行IE.Chrome.Firefox. 然而运行IE浏览器时候(IE比较特殊),Je ...
- 批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务
windows(win10)批处理脚本 打开vm虚拟机的服务,并且开启无界面虚拟机 @echo off net start "vds" net start "VMAuth ...
- XVFB实现selenium在linux上无界面运行安装篇
selenium在linux上无界面运行,其实是非常简单的.具体的方法有使用HtmlUnitDriver或者PhantomJSDriver,有时间我会写写关于这两个东东的文章,其实基本和ChromeD ...
- iOS-通讯录(无界面)
通讯录(无界面) #import "AppDelegate.h" #import <AddressBook/AddressBook.h> @interface AppD ...
- iOS Swift WisdomHUD 提示界面框架
iOS Swift WisdomHUD 提示界面框架 Framework Use profile(应用简介) 一:WisdomHUD简介 今天给大家介绍一款iOS的界面显示器:WisdomHUD,W ...
- iOS 跳转系统设置界面
iOS 跳转系统设置界面 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Pri ...
- python之Phantomjs无界面浏览器引擎自动化测试
文字搬运工,本文主要介绍PhantomJS功能,其中有屏幕快照功能,为后面更新[python接口自动化脚本更新版本],其中新版本中新增自动发送邮件功能正文带图片,使用PhantomJS截取图片后发送邮 ...
- ubuntu中如何安装selenium+chrome(headless)无界面浏览器?
selenium是一个Web的自动化测试工具,它可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生.但是它自身不带浏览器,不支持浏览器的功能,因此它 ...
- Chrome handless无界面浏览器的脚本操作
1.什么是Phantomjs (已经停止更新) 是一个无界面的浏览器 支持页面元素查找,js的执行等 由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多 2.如何使用Phantomjs? ...
随机推荐
- poj 1125 (floyd)
http://poj.org/problem?id=1125. 题意:在经纪人的圈子里,他们各自都有自己的消息来源,并且也只相信自己的消息来源,他们之间的信息传输也需要一定的时间.现在有一个消息需要传 ...
- 常见概率组合题目总结quickstart
[本文链接] http://www.cnblogs.com/hellogiser/p/interview-questions-quickstart-for-combination-permutatio ...
- hdu3709
枚举+数位dp 注意处理数字为0和1的情况. #include <cstdio> #include <cstring> using namespace std; #define ...
- html表单样式, table隔行高亮, 长字符串自动换行
2016年1月14日 11:16:54 星期四 效果图: html: <!DOCTYPE html> <html lang="en"> <head&g ...
- iOS开发学习网站汇总
*本文转自CocoaChina 原文:11 Insanely Great iOS Developers Sites永不止步地向他人学习 我相信,要想从一个"还不错"的人变成一个卓越 ...
- ajax提交表单
$.ajax({ type: "POST", url: action, data: $('#checkout-form').serialize(), success: functi ...
- Myeclipse常用快捷键
转自:http://zjxbw.blog.51cto.com/2808787/543792 Ctrl+Shift+L 显示所有快捷键 Ctrl+K 参照选中的词(Word)快速定位到下 ...
- LeetCode 326 Power of Three
Problem: Given an integer, write a function to determine if it is a power of three. Could you do it ...
- sql语句按照汉字拼音首字母排序
oracle : 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值SCHINESE_RADICAL_M 按照部首(第一顺序).笔划(第二顺序)排序SCHINESE_STR ...
- lazyload
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...