一、相册访问权限
引入Photos.framework框架,利用框架中的PHAuthorizationStatus进行权限状态判断。
#import <Photos/PHPhotoLibrary.h>
PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied)
{
// 无权限
// do something...
}
二、相机访问权限
#import <AVFoundation/AVCaptureDevice.h>
#import <AVFoundation/AVMediaFormat.h>
AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (status == AVAuthorizationStatusRestricted || status == AVAuthorizationStatusDenied)
{
// 无权限
// do something...
}
三、访问应用权限设置界面
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
AVAuthorizationStatus解释
typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {
// 表明用户尚未选择关于客户端是否可以访问硬件
AVAuthorizationStatusNotDetermined = 0,
// 客户端未被授权访问硬件的媒体类型。用户不能改变客户机的状态,可能由于活跃的限制,如家长控制
AVAuthorizationStatusRestricted,
// 明确拒绝用户访问硬件支持的媒体类型的客户
AVAuthorizationStatusDenied,
// 客户端授权访问硬件支持的媒体类型
AVAuthorizationStatusAuthorized
} NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;
ios11之后的系统,可以不需要进行询问用户,就可以直接访问相册。
但是这就出现了一个问题,可以不需要进行询问用户,但是选择图片之后,系统又会询问是否允许询问相册权限。为解决这个问题,不要用ALAuthorizationStatus来判断相册权限。
网友评论