Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 375|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 802 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726006
    发表于 2021-6-3 20:46:11 | 显示全部楼层 |阅读模式

     

    前言

    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 

    效果如图:

          

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-11-15 10:33 , Processed in 0.064990 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表