相机权限和相册权限 使用block 判断

 .h文件中

+ (void)camaraCanuse:(QTCamaraCanuse)camaraCanUse camaraNotCanuse:(QTCamaraNotCanuse)camaraNotCanUse showAlert:(BOOL)showAlert showMsg:(NSString*)showMsg;

+(void)photoCanuse:(QTPhotoCanuse)photoCanUse photoNotCanuse:(QTPhotoNotCanuse)photoNotCanUse showAlert:(BOOL)showAlert showMsg:(NSString*)showMsg;

.m文件中

///底层判断 相机权限和照片是否打开

+ (void)camaraCanuse:(QTCamaraCanuse)camaraCanUse camaraNotCanuse:(QTCamaraNotCanuse)camaraNotCanUse showAlert:(BOOL)showAlert showMsg:(NSString*)showMsg{

BOOL canUse = [self camaraHadAuthorizationAndShowAlert:showAlert showMsg:showMsg];

if (canUse) {

camaraCanUse(canUse);

}else{

camaraNotCanUse(canUse);

}

}

+(void)photoCanuse:(QTPhotoCanuse)photoCanUse photoNotCanuse:(QTPhotoNotCanuse)photoNotCanUse showAlert:(BOOL)showAlert showMsg:(NSString*)showMsg {

BOOL canUse = [self checkPhotoAuthorizationAndShowAlert:showAlert showMsg:showMsg];

if (canUse) {

photoCanUse(canUse);

}else{

photoNotCanUse(canUse);

}

}

+ (BOOL)camaraHadAuthorizationAndShowAlert:(BOOL)show showMsg:(NSString*)showMsg{

NSString *mediaType = AVMediaTypeVideo;// Or AVMediaTypeAudio

AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];

NSLog(@"---授权状态:--------%ld",(long)authStatus);

// This status is normally not visible—the AVCaptureDevice class methods for discovering devices do not return devices the user is restricted from accessing.

if(authStatus ==AVAuthorizationStatusRestricted){

NSLog(@"Restricted,授权限制");

return NO;

}else if(authStatus == AVAuthorizationStatusDenied){

// The user has explicitly denied permission for media capture.

NSLog(@"Denied,授权拒绝");     //应该是这个,如果不允许的话

NSString *showStr = @"请在设备的\"设置-隐私-相机\"中允许访问相机。";

if (strNotNil(showMsg)) {

showStr = showMsg;

}

if (show) {

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"

message:showStr

delegate:self

cancelButtonTitle:@"确定"

otherButtonTitles:nil];

[alert show];

}

return NO;

}

else if(authStatus == AVAuthorizationStatusAuthorized){//允许访问

// The user has explicitly granted permission for media capture, or explicit user permission is not necessary for the media type in question.

NSLog(@"Authorized,授权啦");

return YES;

}else if(authStatus == AVAuthorizationStatusNotDetermined){

// Explicit user permission is required for media capture, but the user has not yet granted or denied such permission.

[AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {

if(granted){//点击允许访问时调用

//用户明确许可与否,媒体需要捕获,但用户尚未授予或拒绝许可。

NSLog(@"Granted access to %@", mediaType);

}

else {

NSLog(@"Not granted access to %@", mediaType);

}

}];

return NO;

}else {

return YES;

//        NSLog(@"未知的授权状态!");

}

}

+ (BOOL)checkPhotoAuthorizationAndShowAlert:(BOOL)show showMsg:(NSString*)showMsg{

ALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus];

if (author == ALAuthorizationStatusRestricted || author ==ALAuthorizationStatusDenied)

{

if (show) {

NSString *showStr = @"请在设备的\"设置-隐私-照片\"中允许访问相机。";

if (strNotNil(showMsg)) {

showStr = showMsg;

}

//无权限

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"

message:showStr

delegate:self

cancelButtonTitle:@"确定"

otherButtonTitles:nil];

[alert show];

}

ECLog(@"相册没授权");

return NO;

}else{

return YES;

ECLog(@"相册授权了");

}

}

五个地方需要使用
发帖子  (包含两个)
添加案例详情
个人中心 添加头像
体检面诊

block 一行代码搞定 ,可用回调的block  不可用回调的block  设置是否需要弹框,是否需要自己写提示文字

时间: 2024-10-04 21:43:53

相机权限和相册权限 使用block 判断的相关文章

iOS相机权限、相册权限、定位权限判断

1.判断用户是否有权限访问相册 #import <AssetsLibrary/AssetsLibrary.h> ALAuthorizationStatus author = [ALAssetsLibraryauthorizationStatus]; if (author == kCLAuthorizationStatusRestricted || author ==kCLAuthorizationStatusDenied){ //无权限 } typedef enum { kCLAuthoriz

iOS9中,swift判断相机,相册权限,选取图片为头像

在iOS7以后要打开手机摄像头或者相册的话都需要权限,在iOS9中更是更新了相册相关api的调用 首先新建一个swift工程,在SB中放上一个按钮,并在viewController中拖出点击事件 ok!按钮和事件设置好以后,我们来引入要用到的库,判断摄像头权限,需要引入AVFoundation.framework,搜索并进行添加 在ViewController中 import AVFoundation 并遵循以下几个代理UIImagePickerControllerDelegate,UIActi

swift-判断是否已获得相机、相册权限

// 相机权限 func isRightCamera() -> Bool { let authStatus = AVCaptureDevice.authorizationStatus(forMediaType: AVMediaTypeVideo) return authStatus != .restricted && authStatus != .denied } // 相册权限 func isRightPhoto() -> Bool { let authStatus = AL

检测相机和定位的权限

1.判断用户是否有权限访问相册 #import <AssetsLibrary/AssetsLibrary.h> [objc] view plain copy ALAuthorizationStatus author = [ALAssetsLibraryauthorizationStatus]; if (author == kCLAuthorizationStatusRestricted || author ==kCLAuthorizationStatusDenied){ //无权限 } typ

iOS开发实战——摄像头与相册权限获取逻辑优化

在实际项目中,我们经常需要访问设备的摄像头或者相册,当第一次安装某个App的时候,系统便会弹出授权对话框,要求用户做出是否授权的判断.整体逻辑比较简单,但是在使用过程中需要对用户体验进行优化,否则会出现bug.该博客的示例代码已经上传至 https://github.com/chenyufeng1991/AuthorityOfCameraAndPhoto . 首先我先描述一下出现的问题.我以访问相册为例,实现代码如下: - (void)photoBtnPressed:(id)sender { /

iOS11访问相册权限变更问题

手机升到iOS 11后  发现之前正常的图片保存功能无法正常使用  会闪退 经测试发现应该是权限没有开启的原因  但是NSPhotoLibraryUsageDescription已经写入plist  且在iOS 11之前的手机系统上是正常的 通过查阅资料得知 OS11之后:默认开启访问相册权限(读权限),无需用户授权,无需添加NSPhotoLibraryUsageDescription,适配iOS11之前的还是需要加的. 添加图片到相册(写权限),需要用户授权,需要添加NSPhotoLibrar

Android 开发技巧 - Android 6.0 以上权限大坑和权限检查基类封装

简单介绍 关于运行时权限的说法,早在Google发布android 6.0的时候,大家也听得蛮多的.从用户的角度来讲,用户是受益方,更好的保护用户的意思,而对于开发者来说,无疑增加了工作量. 对于6.0以下的权限在安装时,会根据权限声明产生一个权限列表,用户只有同意才能完成app的安装.而在6.0以后,不需要先对权限授权就可以安装app,对于权限的授权我们可以选择禁止. 在新的权限机制中,Google将权限分为两类: Normal Permissions(普通权限):不涉及用户隐私,不需要用户进

2、rbac组件 后台布局模板,权限粒度控制,权限按钮

1.后台布局管理 https://www.cnblogs.com/venicid/p/7772742.html#_label0 1.通用模板 overflow: auto; //在a和b模板中进行切换 a 模板 :左侧菜单跟随滚动条 b模板  左侧以及上不动 **** <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>

Android权限之动态权限

安卓系统的权限管理机制从API 23 (也就是Android 6.0 又叫做 Android M,)之后发生了比较大的改变,在一些比较危险的权限上要求必须申请动态权限,即使你在AndroidMainfest.xml文件中申请也没有任何用,或者你可以将编译的目标版本设定这API 22,这样就可以了.但这并不是长久之计,不是吗?所以因此在这里学习一下. 动态权限需求原因 Android 6.0之前,权限在应用安装过程中只询问一次,以列表的形式展现给用户,然而大多数用户并不会注意到这些,直接就下一步了