react native android6+拍照闪退或重启的解决方案

 

前言

android 6+权限使用的时候需要动态申请,那么在使用rn的时候要怎么处理拍照权限问题呢?本文提供的是一揽子rn操作相册、拍照的解决方案,请看正文的提高班部分。

 

解决步骤

1、AndroidManifest.xml设置拍照权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />

2、配置build.gradle:

设置defaultConfig里面的targetSdkVersion>=23.

3、在需要使用的地方或者程序启动之后的主页面的构造中申请相机权限,代码如下:

async requestCameraPermission() {
if (Platform.OS == 'ios') return true;
//申请相机权限
try {
const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.CAMERA, {
title: '申请摄像头权限',
message: '一个很牛逼的应用想借用你的摄像头'
});
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log('现在你获得摄像头权限了');
return true;
} else {
console.log('用户并不屌你');
return false;
}
} catch (err) {
console.warn(err);
return false;
}
}

拍照之前调用上面的方法:

this.requestCameraPermission(); //申请相机权限

 

提高班

多图选择、图片裁剪(支持ad/ios图片个数控制)推荐使用react-native-syan-image-picker,使用教程查看《react-native多图选择、图片裁剪(支持ad/ios图片个数控制)》。

小技巧:react-native-syan-image-picker 版本V0.0.5 安卓6+ 拍照问题有点问题,我已经pull request,作者已经合并,稍后测试问题之后,即可发布,如果着急使用贴出解决代码。

1.修改build.gradle如图:

2、修改RNSyanImagePickerModule.java更新2.1.7配置,代码如下:

.openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio()
.maxSelectNum(imageCount)// 最大图片选择数量 int
.minSelectNum(1)// 最小选择数量 int
.imageSpanCount(4)// 每行显示个数 int
.selectionMode(modeValue)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
.previewImage(true)// 是否可预览图片 true or false
.previewVideo(false)// 是否可预览视频 true or false
.enablePreviewAudio(false) // 是否可播放音频 true or false
.isCamera(isCamera)// 是否显示拍照按钮 true or false
.imageFormat(PictureMimeType.PNG)// 拍照保存图片格式后缀,默认jpeg
.isZoomAnim(true)// 图片列表点击 缩放效果 默认true
.sizeMultiplier(0.5f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
.enableCrop(isCrop)// 是否裁剪 true or false
.compress(true)// 是否压缩 true or false
.glideOverride(160, 160)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
.withAspectRatio(CropW, CropH)// int 裁剪比例 如16:9 3:2 3:4 1:1 可自定义
.hideBottomControls(isCrop)// 是否显示uCrop工具栏,默认不显示 true or false
.isGif(isGif)// 是否显示gif图片 true or false
.freeStyleCropEnabled(true)// 裁剪框是否可拖拽 true or false
.circleDimmedLayer(showCropCircle)// 是否圆形裁剪 true or false
.showCropFrame(showCropFrame)// 是否显示裁剪矩形边框 圆形裁剪时建议设为false   true or false
.showCropGrid(showCropGrid)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false    true or false
.openClickSound(false)// 是否开启点击声音 true or false
.cropCompressQuality(90)// 裁剪压缩质量 默认90 int
.minimumCompressSize(100)// 小于100kb的图片不压缩 
.synOrAsy(true)//同步true或异步false 压缩 默认同步
.rotateEnabled(true) // 裁剪是否可旋转图片 true or false
.scaleEnabled(true)// 裁剪是否可放大缩小图片 true or false
.videoQuality(0)// 视频录制质量 0 or 1 int
.videoMaxSecond(15)// 显示多少秒以内的视频or音频也可适用 int 
.videoMinSecond(10)// 显示多少秒以内的视频or音频也可适用 int 
.recordVideoSecond(60)//视频秒数录制 默认60s int
.forResult(PictureConfig.CHOOSE_REQUEST);//结果回调onActivityResult code 

效果如图:

      

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript中Object.keys、Object.getOwnPropertyNames区别

定义 Object.keys 定义&#xff1a;返回一个对象可枚举属性的字符串数组&#xff1b; Object.getOwnPropertyNames 定义&#xff1a;返回一个对象可枚举、不可枚举属性的名称&#xff1b; 属性的可枚举性、不可枚举性 定义&#xff1a;可枚举属性是指那些内部 “可枚举” …

yii框架cookie写入与读取方法

写入cookie: $cookie Yii::app()->request->getCookies(); unset($cookie[$name]); 读取cookie: $cookie Yii::app()->request->getCookies(); echo $cookie[mycookie]->value; 网站查询转载于:https://www.cnblogs.com/itxueba/p/3505979.html

华为交换机基本查询、目录、文件操作命令

1.基本查询命令(在用户视图下使用) pwd 查看当前目录 dir 显示当前目录下的文件信息 more 查看文本文件的具体内容 2.基本目录操作命令(在用户视图下使用) cd 切换目录 mkdir 创建新的目录 rmdir 删除目录 cd… 返回上级目录 3.基本文本操作命令(在用户视图下使用) cop…

学术论文SCI、期刊、毕业设计中的图表专用软件

Origin Origin是由OriginLab公司开发的一个科学绘图、数据分析软件&#xff0c;支持在Microsoft Windows下运行。Origin支持各种各样的2D/3D图形。Origin中的数据分析功能包括统计&#xff0c;信号处理&#xff0c;曲线拟合以及峰值分析。 Origin中的曲线拟合是采用基于Lever…

常用的学术论文图表(折线图、柱状图)matplotlib python代码模板

最终选用了pythonMatplotlib。Matplotlib是著名Python的标配画图包&#xff0c;其绘图函数的名字基本上与 Matlab 的绘图函数差不多。优点是曲线精致&#xff0c;软件开源免费&#xff0c;支持Latex公式插入&#xff0c;且许多时候只需要一行或几行代码就能搞定。 然后小编经过…

史上最详细nodejs版本管理器nvm的安装与使用(附注意事项和优化方案)

使用场景 在Node版本快速更新迭代的今天&#xff0c;新老项目使用的node版本号可能已经不相同了&#xff0c;node版本更新越来越快&#xff0c;项目越做越多&#xff0c;node切换版本号的需求越来越迫切&#xff0c;传统卸载一个版本在安装另一个版本的方式太过于麻烦&#xf…

华为交换机配置当前时区、日期和时间等参数

1.华为交换机时区设置 UTC和GMT 整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地…

qtp:exit 函数

1、ExitAction() 退出当前操作&#xff0c;无论其本地&#xff08;操作&#xff09;循环属性是什么。2、ExitActionIteration() 退出操作的当前循环。3、ExitComponent()退出当前组件并继续业务流程测试中的下一个组件&#xff0c;无论组件的循环设置是什么。4、ExitComponentI…

【TensorFlow】 基于视频时序LSTM的行为动作识别

简介 本文基于LSTM来完成用户行为识别。数据集来源&#xff1a;https://archive.ics.uci.edu/ml/machine-learning-databases/00240/ 此数据集一共有6种行为状态&#xff1a; 行走&#xff1b; 站立&#xff1b; 躺下&#xff1b; 坐下&#xff1b; 上楼&#xff1b; 下楼&am…

javascript数组去重方法汇总

前言 数组去重已经是一个老生常谈的问题了&#xff0c;依然经久不息&#xff0c;经过岁月的变迁es标准的升级迭代&#xff0c;似乎有越来越多的方法和方式供我们使用&#xff0c;那么那种方式才是最优的&#xff1f;那种才是最简洁的&#xff1f;这个我们一起来探讨。 省略&am…

华为交换机认证aaa模式创建本地用户

在系统视图下 telnet server enable //enable选项开启Telnet服务 (普通系列一般为这个) user-interface vty 0 4 protocol inbound telnet //配置vty支持telnet协议 authentication-mode aaa user privilege level 15 aaa local-user admin password cipher admin@123 lo…

利用Asp.net MVC处理文件的上传下载

如果你仅仅只有Asp.net Web Forms背景转而学习Asp.net MVC的&#xff0c;我想你的第一个经历或许是那些曾经让你的编程变得愉悦无比的服务端控件都驾鹤西去了.FileUpload就是其中一个&#xff0c;而这个控件的缺席给我们带来一些小问题。这篇文章主要说如何在Asp.net MVC中上传…

Python遍历文件夹下所有文件及目录

遍历文件夹中的所有子文件夹及子文件使用os.walk()方法非常简单。 语法格式大致如下&#xff1a; os.walk(top[, topdownTrue[, onerrorNone[, followlinksFalse]]]) top – 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文…

你必须知道的session与cookie

Session本质 提到Session我们能联想到的就是用户登录功能&#xff0c;而本身我们使用Session的基础是通过url进行访问的&#xff0c;也就是使用http协议进行访问的&#xff0c;而http协议本身是无状态的&#xff0c;那么问题来了服务器端是怎么验证客户端身份的&#xff1f; …

华为交换机telnet和ftp服务开启/关闭命令

1.telnet开启/关闭 在系统视图下 启用方式如下&#xff1a; telnet server enable //使能telnet服务关闭方式如下&#xff1a; undo telnet server //关闭telnet服务2.FTP开启/关闭 通过display ftp-server查看启用状态 如果已经启用&#xff0c;会在查看的命令中显示&#…

为什么用Spring来管理Hibernate?

为什么用Spring来管理Hibernate&#xff1f;为什么要用Hibernate框架&#xff1f;这个在《Hibernate介绍》博客中已经提到了。既然用Hibernate框架访问管理持久层&#xff0c;那为何又提到用Spring来管理以及整合Hibernate呢&#xff1f;首先我们来看一下Hibernate进行操作的步…

Python-Pandas之两个Dataframe的差异比较

昨天在外网找到一个比较dataframe的好库&#xff0c;叫datacompy&#xff0c;它的优点有&#xff1a; 1、可以把对比后的信息详情打印出来&#xff0c;比如列是否相等&#xff0c;行是否相等&#xff1b; 2、在数据中如果有不相等列&#xff0c;那么就只比较相同的列&#xf…

《JavaScript权威指南》——JavaScript核心

前言 这本由David Flanagan著作&#xff0c;并由淘宝前端团队译的《JavaScript权威指南》&#xff0c;也就是我们俗称的“犀牛书”&#xff0c;算是JS界公认的“圣经”了。本书较厚&#xff08;有1004页&#xff09;&#xff0c;读起来颇费功夫&#xff0c;但作为JavaScript&a…

华为交换机如何通过tftp服务器上传下载文件

温馨提示:为了防止更新交换机配置文件操作失败,操作前交换机配置文件一定要做备份,可以通过copy vrpcfg.zip vrpcfg_backup.zip 工具/原料: windows电脑: Tftpd64 SecureCRT USB转串口,串口转RJ45 console线 2米网线 华为交换机S3700一台 方法/步骤: 1.准备材料,按照下…

Maven排除项目中同名不同版本的jar

今天突然发现web项目打包后的exe居然有200M了&#xff0c;心想不应该有这么大的啊&#xff0c;于是检查了一番发现引用的jar有130个&#xff0c;仔细一瞅发现好多同名的但是不同版本的jar&#xff0c;比如说有commons-httpclient就有两个&#xff0c;3.0和3.1版本的。这样直接导…