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
                    
                })
            }
        }
  • 相关阅读:
    .net序列化和反序列化(一)——自动序列化
    在Sql Server 2005使用公用表表达式CTE简化复杂的查询语句
    使用JQuery与iframe交互
    FCKeditor自定义工具栏和定义多个工具栏
    FCKeditor自定义非空验证
    PHP5.3.6的IIS配置
    Linux下缓存服务器的应用
    PHP采集程序中常用的函数
    关于PHP5.3.x和Zend Optimizer(Zend Guard Loader),以及shopex4.8.5安装的问题
    SQLserver数据库还原出现错误112(磁盘空间不足)的解决办法
  • 原文地址:https://www.cnblogs.com/ljcgood66/p/14242568.html
Copyright © 2011-2022 走看看