转载来源:安卓开发调用摄像头一直失败的原因及解决(权限问题)

安卓开发调用摄像头一直失败的原因及解决(权限问题)

最近开发安卓的时候,发现调用摄像头一直出错,导致APP直接崩溃,

错误代码:java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.android.camera/.Camera clip={text/uri-list U:file:///storage/emulated/0/DCIM/20181106191203.jpg} (has extras) } from ProcessRecord{2db2ead 2049:com.example.kkk.imagetest/u0a295} (pid=2049, uid=10295) with revoked permission android.permission.CAMERA

查询了网上的一些博客,发现大多数没有答到点子上,有的人直接把自己的代码全盘照搬,没有参考价值。现在发现原因如下:

1.Android 6.0之后权限需求的变动

以前的安卓权限都在manifest中一次申请,终身可用,到了安卓6.0(targetSdkVersion to 23)之后,为了防止权限滥用,Google就采取了一些措施:

a.对于targetSdkVersion低于23的APP,使用旧有规则:用户在安装的时候不得不接受所有权限(APP自带),安装后app就有了那些权限。

b.对于targetSdkVersion大于等于23的APP,使用新规则:app不得不在运行时一个一个询问用户授予权限。另外,用户也可以随时在设置里取消已经授权的权限。

2.知道了原因,解决方案:

已经在Manifest中配置了权限信息的情况下,在打开摄像头之前,加上这样一段代码:ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE},1);(询问用户授予权限)

解释:ActivityCompat.requestPermissions(),这个方法接收三个参数,分别是Activity的实例、String数组(manifest中的请求权限)、请求码

注意:第一个参数需要activity的实例,我的MainActivity继承的是默认的APPCompatActivity,所以要加上".this"。

备注:这是最为直接、简单的方法,会显得有些简陋,实际开发中会使用更加完善的方法,但是我觉得这对于初学者是最好理解的,

简洁即是美。2018/11/6

作者:云淡风轻_935f
链接:https://www.jianshu.com/p/ddf87ce7afef
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

[Android Studio]申请摄像头权限失败相关推荐

  1. Android Studio中 HAXM安装失败的问题(Intel HAXM installation failed. To install Intel HAXM follow the...)

    问题描述:安装Android Studio中 在最后一步出现  Intel HAXM installation failed. To install Intel HAXM follow the ins ...

  2. android studio socket 失败,Android应用开发Android Studio建立Socket连接失败解决方法

    本文将带你了解Android应用开发Android Studio建立Socket连接失败解决方法,希望本文对大家学Android有所帮助. < Android Studio建立Socket连接失 ...

  3. android 9 申请动态权限android.permission.WRITE_EXTERNAL_STORAGE 允许后应用闪退

    问题描述:如题,在调试android 9 高通msm8953平台时,客户反馈应用在允许Manifest.permission.WRITE_EXTERNAL_STORAGE权限后,应用闪退. 从log分 ...

  4. Android Studio 下载第三方库失败

    Android Studio下载第三方库失败 网上其他教程相对较老,而且我用的Android Studio的版本为2021,目录结构不太一致. 按网上的其他教程来看,按以下方法就可以解决问题. 但我的 ...

  5. 报错之Android Studio中SDK安装失败HAXM

    安装Android Studio时SDK安装失败HAXM 在模拟器上显示android程序时报错haxm 一.检查自己电脑的虚拟化是否开启 1.打开任务管理器,选择性能-- cpu 2.发现没有开(如 ...

  6. Android studio设置相机权限,如何强制将“android.permission.CAMERA”权限添加到Codename中的清单中...

    我试图在Codename One中显示后置摄像头的实时预览.我使用原生界面(我首先针对的是Android). 为了让我的应用程序能够使用相机而不会弄乱构建提示,我在主窗体中添加了以下行: if (Ca ...

  7. Android已申请动态权限报错,Android 读取或者写入U盘时,报错:Permission denied

    ** 以下所有操作的前提是: android 系统已经root ** 最近在将文件拷贝到U盘时总是 写入失败(Permission denied) 程序清单中已经加入了权限 并且动态申请了权限 pri ...

  8. Android Studio真机测试失败-----''No target device found

    手机成功连接电脑,并且手机已经设置了开发者模式,但是启动真机还是失败,最后发现居然自己没有配置android sdk的环境变量,配置之后 如果还是不能启动,点击android studio上的tool ...

  9. Android 动态申请应用权限

    一.概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户.在 Android 6.0 或更高版本对权限进行了分类,对某些涉及到用户隐私的权限可在运 ...

最新文章

  1. IIS6的PHP最佳配置方法
  2. oracle错误15260,【案例】Oracle报错ORA-00600 2663 产生的原因和解决办法
  3. 查理和政策配对工厂——设计一个问卷运算系统的B端到C端
  4. Echarts中柱状图X轴显示时间显示不开倾斜显示的属性
  5. win7/WIN8.1(x64) 下使用MSDE WIN10不行
  6. 编写高性能的C#代码(三)使用SPAN
  7. Maven多模块打包
  8. POSIX:可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX )
  9. ctk介绍、安装、使用详细说明pdf文档(中文).rar_Minio 安装和使用详解,还有对.net api进行了二次封装...
  10. C基础——fopen() 的 mode参数
  11. python爬百度新闻_13、web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息...
  12. 操作系统—进程控制和进程通信
  13. python中如何调用函数_如何调用python中的内置函数?(实例解析)
  14. 【ActiveMQ】消息生产者自动注入报错:Could not autowire. No beans of #39;JmsMessagingTemplate#39; type found...
  15. 读取文本文件内容并写到excel
  16. 中国人的宴席座次礼仪
  17. GTD时间管理---学习笔记(一)
  18. 汽车加油问题 贪心算法 Java(详细注释)
  19. 互联网晚报 | 12月29日 星期三 | 小米正式宣布对标苹果;新东方上线直播带货平台“东方甄选”;相互宝将于明年1月28日关停...
  20. 实现表单form提交前进行确认提示 表单提交 确认对话框

热门文章

  1. VS中怎么将一个页面设置为起始页的解决方案以及关于粘贴的小窍门
  2. 决战燕京城-08 武穆帅印
  3. 《白夜行》:请让孩子健康成长
  4. 【读书笔记】理工科思维解读《万万没想到》
  5. 服务器修改盘的盘序,黑群辉改sata控制器识别接口数、硬盘盘序的经验总结
  6. iOS代码实现布局(三)—用CocoaPods导入第三方库Masonry
  7. [BZOJ 3811]玛里苟斯(线性基)尽量理解的题解
  8. 很好很强大的FXTZ
  9. 前谷歌工程师差点因为不知道贝叶斯公式被拒
  10. DMZ主机的使用设置