【问题标题】:Writing a file using RNFS (react-native-fs) in Android在 Android 中使用 RNFS (react-native-fs) 编写文件
【发布时间】:2022-12-26 02:42:08
【问题描述】:

我一直在尝试使用 RNFS (react-native-fs) 在 Android 中编写文件,但我不断收到以下错误:

Permission Denial: writing com.android.providers.media.MediaDocumentsProvider uri content://com.android.providers.media.documents/document/image%3A1000004616 from pid=8769, uid=10304 requires android.permission.MANAGE_DOCUMENTS, or grantUriPermission()

这是我的方法:

// write the file
RNFS.writeFile('content://com.android.providers.media.documents/document/image%3A1000004621', '/storage/emulated/0/Documents/my_app_folder/my_image.jpg', 'base64')
.then(success => {
  console.log('FILE WRITTEN!');
})
.catch(err => {
  console.log(err.message);
});

我启用了以下权限:

try {
    PermissionsAndroid.requestMultiple([
      PermissionsAndroid.PERMISSIONS.ACCESS_MEDIA_LOCATION,
      PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
      PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
      PermissionsAndroid.PERMISSIONS.READ_MEDIA_IMAGES,
      PermissionsAndroid.PERMISSIONS.READ_MEDIA_VIDEO,
      PermissionsAndroid.PERMISSIONS.READ_MEDIA_AUDIO,
    ]).then(result => {
      if (
        result['android.permission.ACCESS_MEDIA_LOCATION'] &&
        result['android.permission.READ_EXTERNAL_STORAGE'] &&
        result['android.permission.WRITE_EXTERNAL_STORAGE'] &&
        result['android.permission.READ_MEDIA_IMAGES'] &&
        result['android.permission.READ_MEDIA_VIDEO'] &&
        result['android.permission.READ_MEDIA_AUDIO'] === 'granted'
      ) {
        console.log('SUCCESS! Permissions Granted!');
      } else if (
        result['android.permission.ACCESS_MEDIA_LOCATION'] ||
        result['android.permission.READ_EXTERNAL_STORAGE'] ||
        result['android.permission.READ_MEDIA_IMAGES'] ||
        result['android.permission.READ_MEDIA_VIDEO'] ||
        result['android.permission.READ_MEDIA_AUDIO'] === 'never_ask_again'
      ) {
        console.log(
          'Please Go into Settings -> Applications -> APP_NAME -> Permissions and Allow permissions to continue',
        );
      }
    });
  } catch (err) {
    console.warn(err);
  }  

清单.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.MANAGE_DOCUMENTS" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"   

我哪里错了?

谢谢大家。

【问题讨论】:

    标签: javascript android react-native react-native-fs


    【解决方案1】:

    据我所知,RNFS 对 SAF 的支持仍然存在问题 https://github.com/itinance/react-native-fs/issues/926

    一个可行的解决方案是使用这样的库https://github.com/ammarahm-ed/react-native-scoped-storage。

    并解释为什么会发生https://blog.notesnook.com/scoped-storage-in-react-native/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多