基础功能访问

<1>、通讯录访问
在iOS 6中,以前工作正常的访问通讯录的iPhone程序可能会出错,现象是程序启动时不提醒用户是否允许程序访问通讯录,同时在“设置->隐私->通讯录”中看不到你的程序。另外,对通讯录进行操作的代码会报类似于以下消息的错误:

[plain] view plaincopy

Could not compile statement for query (ABCCopyArrayOfAllInstancesOfClassInSourceMatchingProperties):  
SELECT ROWID, Name, ExternalIdentifier, Type, ConstraintsPath, ExternalModificationTag, ExternalSyncTag, AccountID, Enabled, SyncData, MeIdentifier, Capabilities FROM ABStore WHERE Enabled = ?;

其原因是iOS 6加强了通讯录访问控制,要求开发人员显式声明需要访问通讯录,方法是调用 ABAddressBookRequestAccessWithCompletion
方法,具体参见官方文档:

http://developer.apple.com/library/ios/#releasenotes/General/RN-iOSSDK-6_0/index.html

下面是对应的样例代码,一般来讲需要将这段代码放置在程序启动部分,在程序启动过程中提示用户本程序需要访问设备上的通讯录:

[plain] view plaincopy

ABAddressBookRef addressBook = ABAddressBookCreate();  

        __block BOOL accessGranted = NO;
    if (ABAddressBookRequestAccessWithCompletion != NULL) {  

        // we‘re on iOS 6
        NSLog(@"on iOS 6 or later, trying to grant access permission");  

        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);
        dispatch_release(sema);
    }
    else { // we‘re on iOS 5 or older  

        NSLog(@"on iOS 5 or older, it is OK");
        accessGranted = YES;
    }  

    if (accessGranted) {  

        NSLog(@"we got the access right");
    } 
时间: 2024-08-26 15:06:51

基础功能访问的相关文章

jmeter 基础功能详解

jmeter 基础功能详解 thread group:包含一组线程,每个线程独立地执行测试计划. sampler:采样器,有多种不同的sample实现,用来发起各种请求,如http请求,jdbc请求,javaTest请求等等. logic controller:逻辑控制器有多种不同的实现,可以决定每个sample的执行顺序. listener:有多种不同的实现,主要用于统计测试接话运行中的数据并展示,如可以进行图形化方式展示响应时间. timer:定时器,有多种不同的实现,可用作每个请求见的停顿

(转载)ASP.NET三大核心对象及基础功能解析

原文链接:http://tech.it168.com/a2011/1207/1284/000001284879_all.shtml 想当初在只使用WebForms框架并以服务端为中心的开发模式时,发现Asp.net好复杂.一大堆服务端控件,各有各的使用方法,有些控件的事件也很重要,必须在合适地时机去响应,还真有些复杂.后来逐渐发现这些复杂的根源其实就是服务器控件相关的抽象逻辑.随着Ajax越用越多,可能有些人也做过这些事情:[新建一个ashx文件,读取一些用户的输入数据,Form, QueryS

项目记录3:基础功能

本文内容来自:<传智播客-OA项目> 1,设计 BaseDao 与 BaseDaoImpl    1,设计接口 BaseDao        1,每个实体都应有一个对应的Dao接口,封装了对这个实体的数据库操作.例            实体            Dao接口                实现类            ========================================================            User        

KVM的基础功能(网络、内存、cpu、存储的配置)

KVM的基础功能(网络.内存.cpu.存储的配置) cpu的配置 1)查看cpu插槽数量 [[email protected] ~]# cat /proc/cpuinfo |grep "physical id" |wc -l 24 2)查看cpu核心数量 [[email protected] ~]# cat /proc/cpuinfo |grep "core id"| wc -l 24 3)查看cpu的模型 [[email protected] ~]# cat /p

C# 基础(一) 访问修饰符、ref与out、标志枚举等等

C# 基础(一) 访问修饰符.ref与out.标志枚举等等 一.访问修饰符 在C#中的访问修饰符有:private.protected.internal.public public:公共类型,同一程序集或其他程序集都可以访问此成员 private:私有类型,同一类里或结构里才可以访问此成员 protected:保护类型,同一类里或者派生类中才可以访问此成员 internal:内部类型,只有在同一程序集才可以访问此成员 访问性不一致:子类的访问权限不能比父类高.防止暴露父类的信息.. 二.stat

1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用

1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用 成员变量(属性)①类中添加成员变量 访问修饰符 类型 变量名 private String name ②实例化对象调用类的构造方法类构造对象,Teacher one = new Teacher(): 有static的可以直接调用,因为static是类级别的 ③JavaBean里边一般规则应该有公共的无参构造应该有符合命名规范的get/set方法 ④对象的回收:没有任何引用指向该对象时,GC会回收 主动回收:对象 = nu

六、EnterpriseFrameWork框架基础功能之权限管理

回<[开源]EnterpriseFrameWork框架系列文章索引> 从本章开始进入框架的第二块内容“EnterpriseFrameWork框架的基础功能”,包括:权限管理.字典数据管理.报表管理和消息管理四块,这些功能又包括两个版本,Web版和Winform版也就是说有两套界面: 既然开始讲基础功能,顺便说一下EnterpriseFrameWork框架的适用范围,前面也有提到过就是此框架适合中小团队这是一方面,还一方面就是此框架适合行业应用系统软件的开发,你用它做一个“超市库存管理系统”.“

谷歌Chrome浏览器开发者工具的基础功能

上一篇我们学习了谷歌Chrome浏览器开发者工具的基础功能,下面介绍的是Chrome开发工具中最有用的面板Sources.Sources面板几乎是最常用到的Chrome功能面板,也是解决一般问题的主要功能面板.通常只要是开发遇到了js报错或者其他代码问题,在审视一遍代码而一无所获之后打开Sources进行js断点调试,几乎能解决8成的代码问题. js断点功能让人兴奋不已,以前只能在IE中靠alert弹出窗口调试js代码,那样的开发环境对于前端程序员来说简直是一场噩梦.本篇介绍Sources的具体

Java基础——protected访问修饰符探讨

Java基础——protected访问修饰符探讨 根据官方说法:(如图) protected修饰符是可以修饰其他包中的自损类的,但是我做了个实验,结果发现了一个有趣的现象! 具体请往下看: package com.demo1; public class Demo1 { protected Demo1(){ System.out.println("protected"); } protected void function(){ System.out.println("受保护方