iOS 判断相机权限是否被限制,判断相机是否可以使用
判断相机权限是否被限制
需要导入 AVFoundation 类
- #import <AVFoundation/AVFoundation.h>
- // iOS 判断应用是否有使用相机的权限
- NSString *mediaType = AVMediaTypeVideo;//读取媒体类型
- AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];//读取设备授权状态
- if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){
- NSString *errorStr = @"应用相机权限受限,请在设置中启用";
- [[HUDHelper getInstance] showErrorTipWithLabel:errorStr view:self.navigationController.view];
- return;
- }
如果状态是一个枚举
- typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {
- AVAuthorizationStatusNotDetermined = 0,
- AVAuthorizationStatusRestricted,
- AVAuthorizationStatusDenied,
- AVAuthorizationStatusAuthorized
- } NS_AVAILABLE_IOS(7_0);
- AVAuthorizationStatusNotDetermined
用户还没有对应用程序授权进行操作
- AVAuthorizationStatusRestricted
还没有授权访问的照片数据。
- AVAuthorizationStatusDenied
用户拒绝对应用程序授权
- AVAuthorizationStatusAuthorized
用户对应用程序授权
另外,需要对相机进行判断是否被授权,而相册不需要判断是否授权。
因为相机没有授权的话不能被使用。
而相册的话,系统默认modol出界面提示
就不需要我们进行判断,提示用户了。
判断相机是否可以使用
以下是参考方法:
- #pragma mark - 摄像头和相册相关的公共类
- // 判断设备是否有摄像头
- - (BOOL) isCameraAvailable{
- return [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];
- }
- // 前面的摄像头是否可用
- - (BOOL) isFrontCameraAvailable{
- return [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront];
- }
- // 后面的摄像头是否可用
- - (BOOL) isRearCameraAvailable{
- return [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];
- }
相应的我们需要判断用户的摄像头是否是坏的,以防程序crash
- if (![self isFrontCameraAvailable]) {
- //判断相机是否可用
- NSString *errorStr = @"相机出现问题,将跳转到相册选择照片";
- [[HUDHelper getInstance] showErrorTipWithLabel:errorStr view:self.navigationController.view];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [self openPhotoLibrary];
- });
- return;
- }
iOS 判断相机权限是否被限制,判断相机是否可以使用的更多相关文章
- iOS中判断照片和相机权限
1.照片权限判断 在iOS6之后,app中使用照片(即自带相册)需要用户权限验证,所以我们可以做一个权限判断给出友好的提示或者界面效果. 相册判断需要导入 <AssetsLibrary/Asse ...
- iOS判断一些权限是否被禁止
iOS中经常会遇到访问相册.相机.麦克疯.蓝牙.以及推送等权限,所以每次我们要使用这些权限是都要记得查看用户是否允许了,如果用户禁止了你的访问权限,你仍然去调取相册或者相机等,那么就会先出现下面的这个 ...
- thinkphp自定义权限管理之名称判断
权限管理,就是给不同的用户分配不同的权限.当用户登录或者操作时候进行判断,来阻止用户进行权限以外的操作.本次讲的是当用户登录一刻,只显示权限开启的内容. 一.建立数据库. 1.权限表funcla.来存 ...
- iOS 10 之后,相机权限问题及易出现的Crash
1: iOS 10 之后,访问相机需要设置相关的权限 麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风? 相机权限: Priva ...
- 关于iOS应用通过OpenURL在设置打开相机权限,然后原应用会立即崩溃(重启)的理解
最近偶然发现的一个怪现象: 应用需要相机权限,如果检测到没有开启权限,我们代码内,通过openURL跳转设置界面 //打开应用设置 let url:NSURL = NSURL(string: UIAp ...
- iOS 10 获取相册相机权限
AVAudioSession *audioSession = [[AVAudioSession alloc]init]; [audioSession requestRecordPerm ...
- iOS之访问权限以及跳转到系统界面
iOS开发中有时候有这样的需求:当用户设置不允许访问照片.麦克风和相机等系统权限的时候,这时需要直接跳转到系统的隐私界面进行设置. 判断是否开启权限 前面已经说过,我们需要在用户不允许访问的时候跳转, ...
- 检测 iOS 系统网络权限被关闭
背景 一直都有用户反馈无法正常联网的问题,经过定位,发现很大一部分用户是因为网络权限被系统关闭,经过资料搜集和排除发现根本原因是: 第一次打开 app 不能访问网络,无任何提示 第一次打开 app 直 ...
- Android之运行时相机权限和联系人权限获取
原文:Android之运行时相机权限和联系人权限获取 本文链接:http://blog.csdn.net/qq_16628781/article/details/61623502 Android之运行 ...
随机推荐
- IDE硬盘 SCSI硬盘 SATA硬盘
IDE一般是有扁平电缆连接的,一个扁平电缆可以连接2个IDE硬盘,而一个计算机一般提供2个扁平电缆,所以一般允许4块IDE硬盘.IDE经过多年的发展,成熟,廉价,稳定.一般老式的电脑中装的都是这种硬盘 ...
- MvvmLight 绑定
添加MvvmLight引用,通过Nuget: 加载nuget以后会有ViewModelLocator.cs: 新建自己的ViewModel,继承ViewModelBase: View 通过资源引用Vi ...
- Sublime text 3 SVN插件及使用方法
前提是你电脑里已装有SVN,这时只是设置快捷调用SVN. 1.通过快捷键 ctrl+` 或者 View > Show Console 菜单打开控制台 2.粘贴对应版本的代码后回车安装 适用于 S ...
- cocos2dx 3.x以上(Sprite精灵类的相关属性与创建)
// // MainScene.cpp // helloworld // // Created by apple on 16/9/19. // // #include "MainSce ...
- RequireJS初探
什么是RequireJS? /* --- RequireJS 是一个JavaScript模块加载器.它非常适合在浏览器中使用, 它非常适合在浏览器中使用,但它也可以用在其他脚本环境, 就像 Rhino ...
- Java NIO学习(一)
Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Sel ...
- Codeforce Round #222 Div2
这场断网,本来有个别人的比较卡的无线 但后面睡着了- -! C:额,逆向想下! B:... A:...
- 转:python webdriver API 之设置等待时间
有时候为了保证脚本运行的稳定性,需要脚本中添加等待时间.sleep(): 设置固定休眠时间. python 的 time 包提供了休眠方法 sleep() , 导入 time 包后就可以使用 slee ...
- BroadCast Receive 生命周期
BroadCastReceiver 简介 BroadCastReceiver 源码位于: framework/base/core/java/android.content.BroadcastRecei ...
- 【crunch bang】中文美化
原文连接:http://edyfox.codecarver.org/html/debian_testing_chinese.html 中文字体美化是个很讨厌的事情,无数初学者在这里面浪费了无数时间,做 ...