我的应用程序默认具有相机访问权限。如何关闭它并请求权限?

Posted

技术标签:

【中文标题】我的应用程序默认具有相机访问权限。如何关闭它并请求权限?【英文标题】:My application has the camera access permission by default.How can i turned it off and ask for permission? 【发布时间】:2015-06-09 07:29:42 【问题描述】:

我在我的应用程序中使用相机,我想请求其他所有应用程序都会提示的流行许可。我怎么能得到那个?

AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if(authStatus == AVAuthorizationStatusAuthorized) 
    // do your logic
    authorized = YES;
     [self actionLaunchAppCamera];

 else if(authStatus == AVAuthorizationStatusDenied)
    // denied
    authorized = NO;

 else if(authStatus == AVAuthorizationStatusRestricted)
    // restricted, normally won't happen
 else if(authStatus == AVAuthorizationStatusNotDetermined)
    // not determined?!
    [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) 
        if(granted)
            NSLog(@"Granted access to %@", AVMediaTypeVideo);



         else 
            NSLog(@"Not granted access to %@", AVMediaTypeVideo);
        
    ];
 else 
    // impossible, unknown authorization status

我正在使用上面的代码来检查授权,但它总是进入授权状态条件,因为它已经拥有权限。我已经从隐私设置中检查了权限已经开启。但我从来没有征求过用户的许可。

谢谢大家。

【问题讨论】:

尝试在不同的模拟器上运行应用程序并检查是否请求许可 我直接在设备上运行它。 仅用于在模拟器上交叉检查运行应用程序并检查。 因为在您的真实设备中,如果您授予权限一次并删除应用程序并再次运行,它将自动授予权限,因为设备数据仍在缓存中 是的,我也是这么想的,这不是问题,而是一种行为。 【参考方案1】:

编辑:哦,我明白你的意思了。然后你需要创建 AVCaptureDeviceInput 来查看之前是否询问过权限。如果没有,这会提示用户授予权限。

NSError outError = NULL;
AVCaptureDevice captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
If (captureDevice != NULL) 
AVCaptureDeviceInput captureInput = [AVCaptureDeviceInput deviceInputfromDevice:captureDevice error:outError];
    If (captureInput != NULL && outError == NULL) 
        // we have permission to use the camera
    

您无需卸载应用即可重置访问权限。假设您的设备运行的是 ios 8,只需转到相机设置屏幕并禁用访问:

    退出应用程序 转到设置 -> 隐私 -> 相机 寻找您的应用以关闭开关 运行应用程序

【讨论】:

它永远不会再次弹出授权检查,因为这是第一次检查,它不会打开相机并且我与您分享的 if else 条件拒绝您必须弹出自己留言。 要重置访问权限,您应该转到设置 -> 常规 -> 重置 -> 重置位置和隐私 @akc 是否可以将权限对话框(相机权限)文本更改为中文?有什么办法吗?

以上是关于我的应用程序默认具有相机访问权限。如何关闭它并请求权限?的主要内容,如果未能解决你的问题,请参考以下文章

我的简单相机应用程序(android)在第一次尝试后不会加载相机视图

iOS 12:相机访问请求对话框显示默认权限

苹果系统。如何在每个应用程序上请求访问系统事件?

权限被拒绝后可以访问照片库和相机

Appcelerator 中的相机权限

仅在单击按钮后请求相机权限