通讯录(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

时间: 2024-08-08 22:08:56

通讯录(ios自带无界面)的相关文章

iOS手势 规避同一界面上不同子界面同时响应多个手势

最近在项目中遇到这样一个有关iOS手势的问题,首先需求描述如下:“在一个CollectionView中,要求长按不同的cell,产生一个cell的snapshot,此时可拖拽这个snapshot再进行后续的操作(如拖到view的某个位置出发一个事件)”.需求本身并不复杂,但要求每次只能有一个cell响应长按手势,不允许同时有两个或以上的cell响应长按手势. 我们知道UIGestureRecognizer有很多回调和方法可以兼容同一个View上的多种手势,网上相关的教程也很多,比如: http:

ios开发系列-界面

本章我们通过设计一个简单的登录界面来讲解一下在ios中如何设计界面.打开上章创建的项目后,首先我们要导入几个需要使用的图片.导入方式其实很简单.选中assets.xcassets.然后将使用的图片拖入即可.这里说明一下的是图片的名称最好带个页面前缀什么的,因为虽然可以在assets.xcassets中虽然可以创建文件夹,但最终读取图片的时候是没有路径的,也就是说如果你在不同文件夹下有同名的图片文件的话会出问题.说到图片文件.这里推荐一个找图片资源的网站http://www.easyicon.ne

iOS Swift WisdomHUD 提示界面框架

iOS Swift WisdomHUD 提示界面框架  Framework Use profile(应用简介) 一:WisdomHUD简介 今天给大家介绍一款iOS的界面显示器:WisdomHUD,WisdomHUD是Swift 4.2编写的framework,支持iOS8.0及以上使用,并且完成兼容OC项目的调用, 使用方便,支持动态属性可设置. 二:WisdomHUD集成 1. pod集成:pod  'WisdomHUD' 2. github链接地址:https://github.com/t

selenium2支持无界面操作(HtmlUnit和PhantomJs)

selenium2支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器完成测试的. 其实selenium也是支持无界面浏览器操作的.比如说HtmlUnit和PhantomJs.他们都不是真正的浏览器,运行时不会渲染页面显示内容,但是支持页面元素查找,js的执行等:由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多. 1.htmlUnit是java实现的类浏览器程序,包含在sel

Chrome开启无界面浏览模式Python+Windows环境

环境:Python 3.5.x + Selenium 3.4.3 + Chromedriver 2.30 + Chrome 60 beta版 + WIN7/WIN10 chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') driver = webdriver.Chrome(chrome_options=chrome_options) 代码很简单,只是环境要强调说明一下,Chrome

IOS简单的登陆界面

主要需要注意的几个问题: 1.导入图片方式最好用文件导入 代码: 在ViewController.m文件中 2.UILable常用属性 @property(nonatomic,copy)   NSString           *text; //设置文本内容 @property(nonatomic,retain) UIFont             *font; //设置字体 @property(nonatomic,retain) UIColor            *textColor;

selenium phantomjs java无界面浏览器环境搭建

java selenium搭建无界面浏览器 1.http://phantomjs.org/ 下载windows版phantomjs 2.解压后bin目录下会有exe文件 3.测试代码: package se; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.phantomjs.PhantomJSDriver; pub

iOS 自带定位功能

第一步:导入头文件 #import <CoreLocation/CoreLocation.h> #import <CoreLocation/CLLocationManagerDelegate.h> 第二步:设置代理 CLLocationManagerDelegate 第三步:创建一个属性 @property(nonatomic, strong) CLLocationManager *locationManager; 第四步:初始化     //定位服务管理对象初始化     _lo

ios 自带xml 解析,TBXMLParser解析

今天看了下苹果xml 解析,写了个小demo 心想还是 在博客上写点东西吧,毕竟很久很久都没有上来了 先上个效果图把 接下来 看下 工程目录图吧 本demo 分两种解析模式,一是苹果自带的, 首先先看下苹果自带的吧,工程文件为 NoteXMLParser 文件 ,另一种解析模式 是 NotesTBXMLParser文件 NoteXMLParser.h 文件代码如下 : // // NoteXMLParser.h // TestXML // // Created by choni on 14-5-