【问题标题】:if photolibrary permission is given and camera permission is not given then camera opens and take a blank photo如果授予照片库许可但未授予相机许可,则相机打开并拍摄一张空白照片
【发布时间】:2017-08-02 09:02:29
【问题描述】:

我之前拒绝了相机的许可,但之前获得了照片库的许可。但相机打开时黑屏。我可以看到拍照的选项。有什么办法不打开相机。

我的代码是这样的

-(void)showImagePickerWithSoureType:(UIImagePickerControllerSourceType)type
{
    if([UIImagePickerController isSourceTypeAvailable:type])
    {
        pickerObj = [UIImagePickerController new];
        pickerObj.sourceType = type;
        UIViewController *topMostViewController = [CommonFunctions getTopMostViewControllerFromRootViewController:[CommonFunctions getAppDelegateObject].window.rootViewController];
        dispatch_async(dispatch_get_main_queue(), ^{
           [topMostViewController presentViewController:pickerObj animated:YES completion:NULL];
            pickerObj.delegate = self;
            pickerObj.editing = true;
            pickerObj.allowsEditing = true;
        });


        if([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusNotDetermined)
        {
            [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
                switch (status) {
                    case PHAuthorizationStatusAuthorized:
                        break;
                    case PHAuthorizationStatusRestricted:
                        [self imagePickerControllerDidCancel:pickerObj];
                        break;
                    case PHAuthorizationStatusDenied:
                        [self imagePickerControllerDidCancel:pickerObj];
                        break;
                    default:
                        break;
                }
            }];
        }
    }
}

【问题讨论】:

    标签: ios objective-c uiimagepickercontroller phphotolibrary


    【解决方案1】:

    试试这样:

    对于相机

        AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
        if(authStatus == AVAuthorizationStatusAuthorized)
        {
            [self accessCamera];
        }
        else if(authStatus == AVAuthorizationStatusNotDetermined)
        {
    
            [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted)
             {
                 if(granted)
                 {
                     [self accessCamera];
                 }
                 else
                 {
                     [self deniedCamera];
                 }
             }];
        }
    else
     {
                [self deniedCamera];
     }
    

    对于照片库

    PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
    
    if (status == PHAuthorizationStatusAuthorized) {
        [self accessPhotoLibrary];
    }
    else if (status == PHAuthorizationStatusNotDetermined) {
    
        [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
    
            if (status == PHAuthorizationStatusAuthorized) {
                [self accessPhotoLibrary];
            }else {
                [self deniedPhotoLibrbary];
            }
        }];
    }
    else  {
        [self deniedPhotoLibrbary];
    }
    

    以及调用pickerView委托的方法

    -(void)accessCamera{        
    
    
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.allowsEditing = YES;
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
            dispatch_async(dispatch_get_main_queue(), ^{
                [self presentViewController:picker animated:YES completion:NULL];
            });
    }
    
    
    -(void)accessPhotoLibrary{
            UIImagePickerController *picker = [[UIImagePickerController alloc] init];
            picker.allowsEditing = YES;
            picker.delegate = self;
            picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            dispatch_async(dispatch_get_main_queue(), ^{
                [self presentViewController:picker animated:YES completion:NULL];
            });
    
    }
    

    然后就可以通过didFinishPickingMediaWithInfo方法获取图片了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 2011-09-30
      • 1970-01-01
      相关资源
      最近更新 更多