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
                    
                })
            }
        }
  • 相关阅读:
    10个强大的Apache开源模块
    Flume日志收集(转载)
    hbase安装配置(整合到hadoop)
    Hadoop与HBase兼容版本汇总
    关于Mysql Proxy LUA实现Mysql读写分离
    Redis发布了集群版3.0.0 beta
    Spring MVC 学习之 400 错误
    Mahout安装(Hadoop 1.2.1 版本)
    【Android】性能优化
    【Android】asynchronous http client
  • 原文地址:https://www.cnblogs.com/ljcgood66/p/14242568.html
Copyright © 2011-2022 走看看