检测Adroid手机摄像机权限是否被第三方限制

来源:互联网 发布:js json字符串取值 编辑:程序博客网 时间:2024/05/01 06:13

当我们要调用相机时一般会先检查是否有相机的使用权限

if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)      == PackageManager.PERMISSION_GRANTED) {   //已有权限}else{   //没有权限,申请权限   ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA},         11);}

如果用户从系统设置里关闭权限 是没有问题的,
但是如果用户通过第三方安全软件限制了权限,就会出现检测到已经获得权限,但是不能使用照相机的情况!
这样就会导致后面逻辑出错或者拍照直接返回了一张空图片!(调用系统照相机被第三方限制权限时不会报任何异常,只是自己穿进去的url没有图片)
为了解决这个问题,做了各种尝试,各种框架,都没法准确的判断出是否被第三方限制了权限.
最后想到解决办法是直接调用照相机,如果能调用则认为有权限,如果中途报异常则认为么有权限
代码:

/** * 通过尝试打开相机的方式判断有无拍照权限(在6.0以下使用拥有root权限的管理软件可以管理权限) * * @return */public static boolean cameraIsCanUse() {    boolean isCanUse = true;    Camera mCamera = null;    try {        mCamera = Camera.open();        Camera.Parameters mParameters = mCamera.getParameters();        mCamera.setParameters(mParameters);    } catch (Exception e) {        isCanUse = false;    }    if (mCamera != null) {        try {            mCamera.release();        } catch (Exception e) {            e.printStackTrace();            return isCanUse;        }    }    return isCanUse;}
0 0
原创粉丝点击