前言

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 

效果如图:

      

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

  1. android系统相机的使用、及解决拍照闪退的问题

    http://blog.csdn.net/lang791534167/article/details/39647263 相机已成为Android手机不可或缺的一部分,我们在开发可能也会涉及到关于相机的 ...

  2. Android+webview+h5 拍照闪退问题

    Android在某些机型中拍照闪退 最近一个Android的项目,使用webview+H5的混合开发模式.这样的模式主要是开发周期端,而且避免了机型兼容的问题.在实际使用中却发现了另外一些问题. 问题 ...

  3. React Native Android启动白屏的一种解决方案下

    React Native Android启动白屏的一种解决方案下 参考文章: (1)React Native Android启动白屏的一种解决方案下 (2)https://www.cnblogs.co ...

  4. React Native Android启动白屏的一种解决方案上

    React Native Android启动白屏的一种解决方案上 参考文章: (1)React Native Android启动白屏的一种解决方案上 (2)https://www.cnblogs.co ...

  5. React Native 警告 Animated: `useNativeDriver` is not supported 的解决方案

    React Native 警告 Animated: `useNativeDriver` is not supported 的解决方案 当出现该报错的时候,是缺少了useNativeDrive参数造成了 ...

  6. 分析解决微信拍照上传图片闪退,重启问题

    前言 近日,公司项目在使用过程中, 有客户反馈,微信公众号和小程序中,拍照确认时,导致程序重启,严重者直接闪退,直接导致业务流程无法正常走通. 调查 客户使用手机为小米 cc9 和 cc9 pro 以 ...

  7. 一致吗 驱动_外国不过春节?AMD驱动再更新,解决BUG,游戏不闪退,重启不黑屏...

    AMD依然是那个AMD,驱动自然也还是那个驱动. 相对于英特尔大的驱动来说,AMD的驱动也继承了ATI当年催化剂驱动的<优良传统>. 真的是BUG不断. 上一个版本的驱动的实在锤问题: & ...

  8. ios10.0相册拍照闪退原因

    iOS10系统下调用系统相册.相机功能,遇到闪退的情况,描述如下: This app has crashed because it attempted to access privacy-sensit ...

  9. Zookeeper启动闪退可能原因及解决方案

    目录 1.问题现象 2.问题原因 3.解决办法 在windows下执行zkServer.cmd启动Zookeeper闪退,可以在启动脚本添加一行pause让窗口不消失,方便查看报错信息 主要有以下两种 ...

最新文章

  1. 六间房与花椒直播重组首次交割完成
  2. 在前后端分离的路上承受了多少痛?看看这篇是否能帮到你?
  3. 简单排序:直接插入排序
  4. 表单input中disabled提交后得不到值的解决办法
  5. 局域网常见***与如何防范讲解【14集】
  6. 使用Skywalking实现全链路监
  7. 2020 我的C++的学习之路 第九章 内存模型与名称空间
  8. Java11 新特性
  9. Eclipse最新插件的下载地址大全[收集整理] zt
  10. IDEA JetBrains Mono字体介绍和安装
  11. python 打印皮卡丘_来简单聊聊python的装饰器呀~
  12. [Node.js]001.安装与环境配置
  13. 2022年最新过DD检测方法dd防检测方法
  14. c语言mac图形化界面编写,「分享」C语言如何编写图形界面
  15. 病毒感染检测(数据结构串,c语言版)
  16. kafka Reassign Partitions Tool
  17. 应用场景应该如何选择适合的区块链底层技术平台?
  18. 理解字节序 [Understanding Big and Little Endian Byte Order]
  19. python中rouge是什么程序_rouge与pyrouge使用事项
  20. 华为陈黎芳:已在全球获得50多个5G商业合同

热门文章

  1. Latex 生成的PDF增加行号 左右两边
  2. Node操作Mysql的简单例子
  3. Shell编程—企业生产案例
  4. 使用国内DOCKER镜像源
  5. tomcat 多项目多HOST配置
  6. Oracle .事物,提交,回滚
  7. Javascript 事件冒泡处理
  8. 公主病 - 百度百科
  9. 临时表和内存表的区别
  10. 英国Carmarthen Learning Centre校长Mr Stuart来华访问,与荣新IT培训中心达成教学合作关系...