当前位置: 移动技术网 > 移动技术>移动开发>Android > Android判断用户是否允许了摄像头权限实例代码

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

2019年07月24日  | 移动技术网移动技术  | 我要评论
如题,既然是判断用户是否允许了摄像头权限,那么,咱们就忽略是manifest配置的问题,因为这是开发者的事。 用户在使用app时,如果首次进入用摄像头的地方,手机会提示是

如题,既然是判断用户是否允许了摄像头权限,那么,咱们就忽略是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是不一样的,差别太大,本人试过,整不动。。。感兴趣的同学可以试试哦,验证一下

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网