我的应用程序默认具有相机访问权限。如何关闭它并请求权限?
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 是否可以将权限对话框(相机权限)文本更改为中文?有什么办法吗?以上是关于我的应用程序默认具有相机访问权限。如何关闭它并请求权限?的主要内容,如果未能解决你的问题,请参考以下文章