判断相机权限是否被限制

需要导入   AVFoundation 类

[objc] view
plain
 copy

  1. #import <AVFoundation/AVFoundation.h>
[objc] view
plain
 copy

  1. //    iOS 判断应用是否有使用相机的权限
  2. NSString *mediaType = AVMediaTypeVideo;//读取媒体类型
  3. AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];//读取设备授权状态
  4. if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){
  5. NSString *errorStr = @"应用相机权限受限,请在设置中启用";
  6. [[HUDHelper getInstance] showErrorTipWithLabel:errorStr view:self.navigationController.view];
  7. return;
  8. }

如果状态是一个枚举

[objc] view
plain
 copy

  1. typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {
  2. AVAuthorizationStatusNotDetermined = 0,
  3. AVAuthorizationStatusRestricted,
  4. AVAuthorizationStatusDenied,
  5. AVAuthorizationStatusAuthorized
  6. } NS_AVAILABLE_IOS(7_0);
[objc] view
plain
 copy

  1. AVAuthorizationStatusNotDetermined

用户还没有对应用程序授权进行操作

[objc] view
plain
 copy

  1. AVAuthorizationStatusRestricted

还没有授权访问的照片数据。

[objc] view
plain
 copy

  1. AVAuthorizationStatusDenied

用户拒绝对应用程序授权

[objc] view
plain
 copy

  1. AVAuthorizationStatusAuthorized

用户对应用程序授权

另外,需要对相机进行判断是否被授权,而相册不需要判断是否授权。

因为相机没有授权的话不能被使用。

而相册的话,系统默认modol出界面提示

就不需要我们进行判断,提示用户了。

判断相机是否可以使用

以下是参考方法:

[objc] view
plain
 copy

  1. #pragma mark - 摄像头和相册相关的公共类
  2. // 判断设备是否有摄像头
  3. - (BOOL) isCameraAvailable{
  4. return [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];
  5. }
  6. // 前面的摄像头是否可用
  7. - (BOOL) isFrontCameraAvailable{
  8. return [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront];
  9. }
  10. // 后面的摄像头是否可用
  11. - (BOOL) isRearCameraAvailable{
  12. return [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];
  13. }

相应的我们需要判断用户的摄像头是否是坏的,以防程序crash

[objc] view
plain
 copy

  1. if (![self isFrontCameraAvailable]) {
  2. //判断相机是否可用
  3. NSString *errorStr = @"相机出现问题,将跳转到相册选择照片";
  4. [[HUDHelper getInstance] showErrorTipWithLabel:errorStr view:self.navigationController.view];
  5. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  6. [self openPhotoLibrary];
  7. });
  8. return;
  9. }

iOS 判断相机权限是否被限制,判断相机是否可以使用的更多相关文章

  1. iOS中判断照片和相机权限

    1.照片权限判断 在iOS6之后,app中使用照片(即自带相册)需要用户权限验证,所以我们可以做一个权限判断给出友好的提示或者界面效果. 相册判断需要导入 <AssetsLibrary/Asse ...

  2. iOS判断一些权限是否被禁止

    iOS中经常会遇到访问相册.相机.麦克疯.蓝牙.以及推送等权限,所以每次我们要使用这些权限是都要记得查看用户是否允许了,如果用户禁止了你的访问权限,你仍然去调取相册或者相机等,那么就会先出现下面的这个 ...

  3. thinkphp自定义权限管理之名称判断

    权限管理,就是给不同的用户分配不同的权限.当用户登录或者操作时候进行判断,来阻止用户进行权限以外的操作.本次讲的是当用户登录一刻,只显示权限开启的内容. 一.建立数据库. 1.权限表funcla.来存 ...

  4. iOS 10 之后,相机权限问题及易出现的Crash

    1: iOS 10 之后,访问相机需要设置相关的权限 麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风? 相机权限: Priva ...

  5. 关于iOS应用通过OpenURL在设置打开相机权限,然后原应用会立即崩溃(重启)的理解

    最近偶然发现的一个怪现象: 应用需要相机权限,如果检测到没有开启权限,我们代码内,通过openURL跳转设置界面 //打开应用设置 let url:NSURL = NSURL(string: UIAp ...

  6. iOS 10 获取相册相机权限

            AVAudioSession *audioSession = [[AVAudioSession alloc]init]; [audioSession requestRecordPerm ...

  7. iOS之访问权限以及跳转到系统界面

    iOS开发中有时候有这样的需求:当用户设置不允许访问照片.麦克风和相机等系统权限的时候,这时需要直接跳转到系统的隐私界面进行设置. 判断是否开启权限 前面已经说过,我们需要在用户不允许访问的时候跳转, ...

  8. 检测 iOS 系统网络权限被关闭

    背景 一直都有用户反馈无法正常联网的问题,经过定位,发现很大一部分用户是因为网络权限被系统关闭,经过资料搜集和排除发现根本原因是: 第一次打开 app 不能访问网络,无任何提示 第一次打开 app 直 ...

  9. Android之运行时相机权限和联系人权限获取

    原文:Android之运行时相机权限和联系人权限获取 本文链接:http://blog.csdn.net/qq_16628781/article/details/61623502 Android之运行 ...

随机推荐

  1. Java基础——常用类(Date、File)以及包装类

    本文要点: 基本数据类型的包装类 字符串相关类: 不可变字符序列:String 可变字符序列:StringBuffer.StringBuilder 时间处理相关类: Date DateFormat.S ...

  2. LINQ使用

    基于扩展方法和lamda表达式 1. 查询序列中满足一定条件 Where扩展方法 public interface ISlotPortBinding { byte SlotNumber { get; ...

  3. LUA闭包概念演示

    闭包的一个重要场景,形成一个自治的环境, 让操作可以封闭运行, 即函数运行时有状态的,可以从闭包创建时候的环境独立开来. 例如下面的lua闭包, genFilter 其入参parmIn是 函数的内部变 ...

  4. Rman备份的保留策略(retention policy)

    什么是备份的保留策略(retention policy) 保留策略就是指某份备份是否要保留以及保留多久.可以使用configure retention policy命令来创建一个一致的.自动的备份保留 ...

  5. java io读书笔记(2)什么是stream

    什么是stream?stream就是一个长度不确定的有序字节序列. Input streams move bytes of data into a Java program from some gen ...

  6. [Reprint]c++中typename和class的区别介绍

    在c++Template中,很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢?   相信学习C++的人对class这个关键字都非常明白,clas ...

  7. nyist 676 小明的求助

    http://acm.nyist.net/JudgeOnline/problem.php?pid=676 小明的求助 时间限制:2000 ms  |  内存限制:65535 KB 难度:2   描述 ...

  8. [原创]java WEB学习笔记90:Hibernate学习之路-- -HQL检索方式,分页查询,命名查询语句,投影查询,报表查询

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. 接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?

    接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)? 1. 接口可以继承接口. 2. 抽像类可以实现(implements)接 ...

  10. URAL 1876 Centipede's Morning(数学)

    A centipede has 40 left feet and 40 right feet. It keeps a left slippers and b right slippers under ...