Android判断用户是否允许了摄像头权限实例代码

 更新时间:2017年04月13日 17:04:36   作者:CaptainJno  
本篇文章主要介绍了Android判断用户是否允许了摄像头权限实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

如题,既然是判断用户是否允许了摄像头权限,那么,咱们就忽略是Manifest配置的问题,因为这是开发者的事。

用户在使用APP时,如果首次进入用摄像头的地方,手机会提示是否允许该应用使用摄像头。有些用户小手一抖、或者压根就不想开启摄像头,咔擦,就给你关了,那好了。下回再进入该功能,就会出现APP一片黑,或者崩溃的情况。

作为开发者,正常思路是要提示用户,摄像头权限被你关了,赶紧去手动开启,不然,就别想用该功能了!那,咱们该怎么实现这个思路呢?

一、判断摄像头权限

Android API没提供判断摄像头权限是否被关闭的方法,但是,我们依然有办法,直接上代码:

public static booleanisCameraUseable() {

boolean canUse =true;

Camera mCamera =null;

try{

mCamera = Camera.open();

// setParameters 是针对魅族MX5。MX5通过Camera.open()拿到的Camera对象不为null

Camera.Parameters mParameters = mCamera.getParameters();

mCamera.setParameters(mParameters);

}catch(Exception e) {

canUse =false;

}

 if(mCamera !=null) {

 mCamera.release();

 }
 return canUse;

 }

上面方法,放心copy到你的代码里,在使用摄像头之前,调用一下,返回ture说明摄像头权限是开启的。反之,摄像头权限被用户关掉了。

附注:

1、可以看出代码实现思路是通过调用Camera.open(),然后根据是否出现异常来判断权限状态。感兴趣的同学可以看看Android SDK里的android.hardware.Camera这个类,在第490行左右的代码,google就是这么干的。

Camera(intcameraId) {

interr = cameraInitNormal(cameraId);

if(checkInitErrors(err)) {

switch(err) {

case EACCESS:

throw newRuntimeException("Fail to connect to camera service");

case ENODEV:

throw newRuntimeException("Camera initialization failed");

default:

// Should never hit this.

throw newRuntimeException("Unknown camera error");

}

}

}

2、由于魅族MX5的ROM改了很多东西,google大哥的方法不能完全直接用,于是又加了上面有注释处的代码,这里不做过多解释。

二、给提示

如果摄像头权限被用户关掉了,处理思路是:弹出个对话框,提示用户去系统设置中,找到摄像头管理权限界面,手动打开摄像头权限。

三、跳转设置界面手动开启权限

跳转设置界面的代码如下:

Intent intent =new Intent(Settings.ACTION_SETTINGS);

context.startActivity(intent);

附注:有的人会问,为啥不直接跳到摄像头权限管理界面去呢,换个action不就行了?是的,这种思路没错,但是不同厂家手机打开摄像头权限管理界面的action是不一样的,差别太大,本人试过,整不动。。。感兴趣的同学可以试试哦,验证一下

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android高仿微信对话列表滑动删除效果

    Android高仿微信对话列表滑动删除效果

    这篇文章主要为大家详细介绍了Android高仿微信对话列表滑动删除效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android接入USB扫码模块的方法

    Android接入USB扫码模块的方法

    这篇文章主要为大家详细介绍了Android接入USB扫码模块的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Android RenderScript实现高斯模糊

    Android RenderScript实现高斯模糊

    这篇文章主要为大家详细介绍了Android RenderScript实现高斯模糊的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Android RecylerView入门教程

    Android RecylerView入门教程

    这篇文章主要介绍了Android RecylerView入门教程的相关资料,很适合刚入门的新手学习,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • Android加载Assets目录中Xml布局文件

    Android加载Assets目录中Xml布局文件

    这篇文章主要为大家详细介绍了Android加载Assets目录中Xml布局文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Android调用系统自带的分享功能实例代码

    Android调用系统自带的分享功能实例代码

    本篇文章主要介绍了Android调用系统自带的分享功能实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • Android中XUtils3框架使用方法详解(一)

    Android中XUtils3框架使用方法详解(一)

    这篇文章主要介绍了Android中XUtils3框架使用方法详解(一)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • ReactiveCocoa代码实践之-更多思考

    ReactiveCocoa代码实践之-更多思考

    这篇文章主要介绍了ReactiveCocoa代码实践之-更多思考的相关资料,需要的朋友可以参考下
    2016-04-04
  • Android 开发与代码无关技巧详解

    Android 开发与代码无关技巧详解

    这篇文章主要为大家介绍了Android 开发与代码无关技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Android中Fragment的分屏显示处理横竖屏显示的实现方法

    Android中Fragment的分屏显示处理横竖屏显示的实现方法

    今天小编就为大家分享一篇关于Android中Fragment的分屏显示处理横竖屏显示的实现方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论