加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

react-native-android – React Native saveToCameraRoll在Andro

发布时间:2020-12-15 20:16:34 所属栏目:百科 来源:网络整理
导读:描述 saveToCameraRoll因Android上的权限被拒绝错误而失败 再生产 将AWS S3照片保存到设备相机胶卷突然失败 RNFS.downloadFile(DownloadFileOptions) .promise .then(() = { CameraRoll.saveToCameraRoll(path,this.state.type) // path = /data/user/0/com.
描述

saveToCameraRoll因Android上的权限被拒绝错误而失败

再生产

将AWS S3照片保存到设备相机胶卷突然失败

RNFS.downloadFile(DownloadFileOptions)
            .promise
            .then(() => {
                 CameraRoll.saveToCameraRoll(path,this.state.type) // path = /data/user/0/com.XXX.app/filesimage-xyz.jpg"
                    .then((data) => {
                        RNFS.unlink(path)
                            .then(() => {
                                console.log('Download and file unlink succeeded');
                            })
                            .catch((err) => {
                                console.error("RNFS unlink error: ",err.message);
                            });
                        })
                    .catch((error) => { 
                        console.error("Save to Cameral roll  error: ",error.message); 
//error = code:"EUNSPECIFIED"
// framesToPop:1
// message:"Permission denied"
// stack:"Error: Permission denied?  
                    });
                })
            .catch((error) => {
                console.error("RNFS.downloadFile! error: ",error.message);
            });

我有android / app / src / main / AndroidManifest.xml
< uses-permission android:name =“android.permission.WRITE_EXTERNAL_STORAGE”/>
少数其他权限.

什么可以导致权限被拒绝错误?在Manifest级别应该做什么来保存到cameraRoll?

附加信息

> React Native版本:[填写此内容:错误是否在最新的RN版本上重现?]
检查V41
>平台:[填写此内容:iOS,Android或两者兼而有之?]
Android inly
>操作系统:[填写此内容:MacOS,Linux或Windows?]
Dev MacOS Sierra
>开发工具:[填写此内容:Xcode或Android Studio版本,iOS或Android SDK版本,如果适用]
RN CLI Android SDK

解决方法

从Android 6.0(API级别23)开始,用户在应用程序运行时向应用程序授予权限,而不是在安装应用程序时.您可以使用 PermissionAndroid API让用户授予外部存储访问权限.

例:

requestExternalStoragePermission = async () => {
    try {
      const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,{
          title: 'My App Storage Permission',message: 'My App needs access to your storage ' +
            'so you can save your photos',},);
      return granted;
    } catch (err) {
      console.error('Failed to request permission ',err);
      return null;
    }
  };

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读