zoukankan      html  css  js  c++  java
  • OC、Swift判断相机、相册、麦克风、定位的权限

    最近关于隐私比较关注

    有个需求:判断相机、相册、麦克风、定位的权限是否打开。

    点击没设置过权限,就弹窗申请权限,设置过,再设置就跳转App设置

    这里就把OC和Swift的相关代码分享一下,节省读者时间!

    //是否开启麦克风权限
    -(void)openAudioSession {
        if ( AVAudioSession.sharedInstance.recordPermission == AVAudioSessionRecordPermissionUndetermined){
            [AVAudioSession.sharedInstance requestRecordPermission:^(BOOL granted) {
                        
            }];
        }else{
            [self openPermissions];
        }
    }
    
    //是否开启相册权限
    -(void)openAlbum {
        PHAuthorizationStatus authStatus = PHPhotoLibrary.authorizationStatus;
        if ( authStatus == PHAuthorizationStatusNotDetermined ) {
            [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
                        
            }];
        }else{
            [self openPermissions];
        }
    }
    
    //是否开启相机权限
    -(void)openCamera {
        AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
        // 未设置权限
        if (authStatus == AVAuthorizationStatusNotDetermined){
            [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
                        
            }];
        }else{
            [self openPermissions];
        }
    }
    ////是否开启定位权限
    -(BOOL)IsOpenLocation {
        CLAuthorizationStatus authStatus =CLLocationManager.authorizationStatus;
        if (authStatus != kCLAuthorizationStatusRestricted && authStatus != kCLAuthorizationStatusDenied) {
            return  YES;
        }
        return  NO;
    }
    
    // 打开设置
    -(void)openPermissions {
        
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{}
                   completionHandler:^(BOOL success) {
                   }];
        
    }

    swift

    //是否开启相机权限
        func openCamera() {
            let authStatus = AVCaptureDevice.authorizationStatus(for: .video)
            if authStatus == .notDetermined {
                AVCaptureDevice.requestAccess(for: .video) { (res) in
                }
            }else{
                self.openPermissions()
            }
        }
    
        //是否开启相册权限
        func openAlbum() {
            let authStatus = PHPhotoLibrary.authorizationStatus()
            if authStatus == .notDetermined {
                PHPhotoLibrary.requestAuthorization({ (status) in
        
                })
            }else{
                self.openPermissions()
            }
        }
         
        //是否开启麦克风权限
        func openAudioSession() {
            
            let permissionStatus = AVAudioSession.sharedInstance().recordPermission
            if permissionStatus == AVAudioSession.RecordPermission.undetermined {
                AVAudioSession.sharedInstance().requestRecordPermission { (granted) in
                }
            } else{
                self.openPermissions()
            }
        }
        
        //是否开启定位权限
        func IsOpenLocation() -> Bool{
            let authStatus = CLLocationManager.authorizationStatus()
            return authStatus != .restricted && authStatus != .denied
        }
        
        //
        func openPermissions(){
            let settingUrl = NSURL(string: UIApplication.openSettingsURLString)!
            if UIApplication.shared.canOpenURL(settingUrl as URL)
            {
                UIApplication.shared.open(settingUrl as URL, options: [:], completionHandler: { (istrue) in
                    
                })
            }
        }
  • 相关阅读:
    bzoj2733 永无乡 平衡树按秩合并
    bzoj2752 高速公路 线段树
    bzoj1052 覆盖问题 二分答案 dfs
    bzoj1584 打扫卫生 dp
    bzoj1854 游戏 二分图
    bzoj3316 JC loves Mkk 二分答案 单调队列
    bzoj3643 Phi的反函数 数学 搜索
    有一种恐怖,叫大爆搜
    BZOJ3566 概率充电器 概率dp
    一些奇奇怪怪的过题思路
  • 原文地址:https://www.cnblogs.com/ljcgood66/p/14242568.html
Copyright © 2011-2022 走看看