Android 6.0以下系统判断当前摄像头是否可用,原文链接:http://blog.csdn.net/jm_beizi/article/details/51728495
问题概述
android 应用程序无法判定当前是否有摄像头的使用权限,是否可用。
问题分析
android 6.0 Google 对Android的权限做了比较大的修改,比较好处理。问题主要是体现在6.0 以下的系统。
这是我用的一款测试机打印出来的log,忘记是三星还是小米了。
Caused by: Camera permission has been disabled for current app
而魅族MX5的比较怪,我也用了魅蓝note测试,禁用拍照权限直接崩溃
Caused by: Java.lang.RuntimeException: Camera is being used after Camera.release() was called
最开始的时候还以为是摄像头的资源没有释放掉之类的问题引起的,但是在“权限管理”中把摄像头的权限打开就没有这种问题,真心醉了,为什么会报这样的错误?!!!但是问题肯定是权限导致的。
问题解决
网上有种方法是根据 checkPermission 判断权限,但这是判断是否在清单文件中注册了权限,并不能判断当前的摄像头是否被禁止,可用!
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
找到种可行的处理方法,是用抓取 Camera.open() 异常的方法来解决,比较暴力。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
而我们可以在APP进入拍照/扫描 页面的入口处,会先针对权限进行检查。如果有摄像头权限,则正常使用;没有摄像头使用权限,可以弹出个权限弹层或者相关提示之类的告诉用户正在使用的app 没有摄像头权限,需要自己开启。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
关于问题 “android 6.0以下系统判断当前摄像头是否可用” 目前我是这样处理的,感觉不太好,以后有更好的处理办法再替换吧!