[Android Studio]申请摄像头权限失败

news/2024/4/19 16:43:45/

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

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

最近开发安卓的时候,发现调用摄像头一直出错,导致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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


http://www.ppmy.cn/news/775445.html

相关文章

ios 请在设置中打开相机权限_在iOS中请求摄像头权限对话框启动(Prime权限)

权限底漆是为了避免一种情况,你的客户可能会拒绝一个关键功能接入的有效途径的应用程序。 在iOS上,只允许每个功能触发默认系统权限一次。权限启动是指应用程序通过模仿系统权限的警报“启动”客户。 这样做的好处是,如果客户选择退出(选择取…

vue 基于获取摄像头权限 拍照的人脸识别技术

为什么要做这个呢? 不同用户具有不同的权限 如果管理员用户被别人知晓了怎么办? 为了解决该用户 账号密码泄露导致的误操作。 前端实现思路是什么呢? 前端思想是获取摄像头权限 通过canvas 获取base64图片 然后转为二进制文件流 通过FormD…

WebView加载h5页面弹窗无法显示问题和申请摄像头权限问题做个记录

参考文章: WebView 加载H5页面空白问题 WebView使用getUserMedia 首先需要设置webview支持js,在Android 9.0后,访问地址如果是http开头的,还需要在配置文件里设置允许http访问:android:usesCleartextTraffic“true” …

前端调用手机摄像头权限进行扫码解析

前端调用手机摄像头权限进行扫码解析(demo含Vue及原生) 前端调用手机摄像头权限进行扫码解析(demo含Vue及原生js写法)引子实践此时已经可以成功调用摄像头,接下来集成进Vue工程中最后 前端调用手机摄像头权限进行扫码解…

Swift调用摄像头之权限判断

在调用摄像头操作中,可能在你的设备设置—隐私—相机中将你的应用使用camera的权限关闭了,这样就需要打开权限,这个操作代码如下: let status AVCaptureDevice.authorizationStatus(for: .video)if status AVAuthorizationStatu…

Android 判断摄像头权限方法

由于项目需要,我们需要在启动摄像头前,预先判断一下我们的应用是否有摄像头权限(包括系统设置以及第三方安全软件是否禁止了摄像头打开权限)。 目前主要用到了一下两个方法结合起来判断。 1.通过系统的检查权限方法检查。 /*** …

前端获取电脑摄像头权限并拍照进行人脸识别

为什么要做这个呢? 不同用户具有不同的权限 如果管理员用户被别人知晓了怎么办? 为了解决该用户 账号密码泄露导致的误操作。 前端实现思路是什么呢? 前端思想是获取摄像头权限 通过canvas 获取base64图片 然后转为二进制文件流 通过FormD…

PC端调用mediaDevices 对象,获取摄像头权限,实现H5拍照

PC端调用mediaDevices 对象,获取摄像头权限,实现H5拍照 mediaDevices 代码链接 mediaDevices 对象是 JavaScript navigator 对象的一个属性,提供了对媒体输入设备(如摄像头和麦克风)的访问。它是 WebRTC(…

h5获取浏览器的相机和摄像头权限

检查浏览器是否支持getUserMedia方法: navigator.getUserMedia navigator.getUserMedia ||navigator.webkitGetUserMedia ||navigator.mozGetUserMedia ||navigator.msGetUserMedia;if (navigator.getUserMedia) {// 支持 } else {// 不支持 } 使用getUserMedia方…

js获取摄像头权限实现拍照功能

首先说一下js打开摄像头的流程: 使用getUserMedia打开摄像头然后将获取到的流媒体转成url放在video标签中的src中;使用canvas的drawImage方法将video的内容绘至canvas中,这样就形成了截图的效果;使用stream.getTracks()[0].stop(…

Xcode使用OpenCV访问Mac摄像头权限问题

这里记录下Xcode使用OpenCV访问Mac摄像头权限的解决方法: 1、首先配置对应的info.plist文件 右键项目文件-》new file->选择默认的property file-〉命名文件名(如Info.plist)打开创建的文件(以property list的方式)…

Electron mac申请麦克风/摄像头权限,Electron无法打开麦克风

你可能遇到过这样的问题,程序已经安装在mac上了,但是无法获取mac的麦克风,如下在麦克风列表找不到你的程序,这是因为你的程序没有向mac申请获取麦克风权限,只有向mac申请麦克风权限的程序才会在此处显示,具…

Android webview加载页面获取摄像头权限实践(Kotlin)

场景介绍&#xff1a; Android app中的webview加载含摄像头相关逻辑的H5页面&#xff0c;进行赋权的操作 H5页面调取摄像头逻辑&#xff1a; vue编写 <template><div><p>test page</p><div><video ref"video1" width"300&…

QWebEngine自动添加麦克风和摄像头权限

最近开发中遇到QWebEngine嵌入网页&#xff0c;控制语音的开关双击无效的问题。找到如下的解决方案&#xff1a; #include <QApplication> #include <QUrl> #include <QWebEngineView>class WebEnginePage: public QWebEnginePage{Q_OBJECT public:WebEngin…

Ubuntu系统下OpenCV使用实例(虚拟机获取摄像头权限)

文章目录 一、OpenCV图片特效实例&#xff08;实现原图中心放大两倍&#xff09;二、OpenCV视频使用实例1、虚拟机获取摄像头权限2、播放视频3、录制视频 Ubuntu下OpenCV初步学习至此结束&#xff01;&#xff01; 一、OpenCV图片特效实例&#xff08;实现原图中心放大两倍&…

Mac 通过openCV打开摄像头权限

1.登录网址&#xff1a;Installing OpenCV for Java — OpenCV Java Tutorials 1.0 documentation 可以看到这个界面&#xff0c;翻译一下就可以&#xff1b; 我们先打开终端&#xff1b; 出现终端界面&#xff1b; 输入第一行代码&#xff1a;xcode-select --install 会出现安…

趣味小教学-html获取摄像头权限

话不多说&#xff0c;直接上代码 下面是一个基于HTML5的打开摄像头并显示预览的示例代码&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>摄像头预览</title> </head> <body><video i…

iframe获取麦克风和摄像头权限

A页面以iframe形式嵌入B页面。B页面有使用麦克风和摄像头需求&#xff0c;可以对iframe设置allow属性。 let iframe document.createElement("iframe"); iframe.src "/index.html"; iframe.style.width "400"; iframe.style.height "3…

macOS:给 app 添加摄像头权限

macOS&#xff1a;给 app 添加摄像头权限 举例macOS 10.15.x&#xff1a;macOS 11.x: 说 明&#xff1a; 举例 下面以微信为例说明&#xff1a; macOS 10.15.x&#xff1a; /usr/bin/sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO acces…

Unity获取摄像头权限

直接上代码&#xff0c;unity帮我们内置了功能。 using System.Collections; using UnityEngine; using UnityEngine.UI;public class Test : MonoBehaviour {// 图片组件public RawImage rawImage;//图形组件父实体public RectTransform imageParent;//当前相机索引private i…