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

发布时间 - 2026-01-11 00:39:01    点击率:

如题,既然是判断用户是否允许了摄像头权限,那么,咱们就忽略是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调用手机摄像头的方法  # android开发之调用手机的摄像头使用MediaRecorder录像并播放  # Android开发教程之调用摄像头功能的方法详解  # Android实现调用摄像头进行拍照功能  # Android中判断是否有前置摄像头、后置摄像头的方法  # Android实现调用摄像头拍照与视频功能  # Android调用前后摄像头同时工作实例代码  # Android使用MediaCodec将摄像头采集的视频编码为h264  # Android实现调用手机摄像头录像限制录像时长  # 感兴趣  # 掉了  # 跳转  # 关了  # 魅族  # 这是  # 就会  # 好了  # 给你  # 首次  # 太大  # 不动  # 弹出  # 下回  # 不做  # 可以看出  # 不为  # 人会  # 该怎么  # 换个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  活动邀请函制作网站有哪些,活动邀请函文案?  如何快速搭建虚拟主机网站?新手必看指南  高端建站三要素:定制模板、企业官网与响应式设计优化  网站制作企业,网站的banner和导航栏是指什么?  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  如何在七牛云存储上搭建网站并设置自定义域名?  LinuxShell函数封装方法_脚本复用设计思路【教程】  实例解析angularjs的filter过滤器  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  北京网站制作的公司有哪些,北京白云观官方网站?  什么是javascript作用域_全局和局部作用域有什么区别?  黑客如何利用漏洞与弱口令入侵网站服务器?  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  网站制作壁纸教程视频,电脑壁纸网站?  焦点电影公司作品,电影焦点结局是什么?  JS碰撞运动实现方法详解  Python3.6正式版新特性预览  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  如何在阿里云部署织梦网站?  智能起名网站制作软件有哪些,制作logo的软件?  Laravel Docker环境搭建教程_Laravel Sail使用指南  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何在万网开始建站?分步指南解析  UC浏览器如何设置启动页 UC浏览器启动页设置方法  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Laravel storage目录权限问题_Laravel文件写入权限设置  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  JavaScript如何实现错误处理_try...catch如何捕获异常?  jQuery 常见小例汇总  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  Python高阶函数应用_函数作为参数说明【指导】  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  jQuery中的100个技巧汇总  javascript如何操作浏览器历史记录_怎样实现无刷新导航  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  实例解析Array和String方法  Firefox Developer Edition开发者版本入口  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  Laravel模型事件有哪些_Laravel Model Event生命周期详解  Laravel如何实现密码重置功能_Laravel密码找回与重置流程