Android-使用权限以特定路径下载和保存文件

Android-使用权限以特定路径下载和保存文件,android,react-native,android-permissions,Android,React Native,Android Permissions,我想在我的华威(Android 8)应用程序的下载路径中创建并保存文件 我使用的是React原生应用程序,我使用的是rn fetch blob模块 我的方法: const path = `${RNFetchBlob.fs.dirs.DownloadDir}/offer.txt`; return RNFetchBlob.fs .writeFile(path, offer, 'utf8') .then(() => { alert('file create'); })

我想在我的华威(Android 8)应用程序的下载路径中创建并保存文件

我使用的是React原生应用程序,我使用的是
rn fetch blob
模块

我的方法:

const path = `${RNFetchBlob.fs.dirs.DownloadDir}/offer.txt`;

return RNFetchBlob.fs
  .writeFile(path, offer, 'utf8')
  .then(() => {
    alert('file create');
  })
  .catch(error => console.log(error));
以及错误消息:

{[错误:权限被拒绝]帧停止:1,代码:'EUNSPECIFIED'}

和我的AndroidManifest.xml文件:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

我不明白为什么我有这个权限错误,一切都好吗

有人能帮我吗


谢谢大家!

对于6及更高版本,您必须添加权限运行时。 您可以使用此插件添加权限。


此外,您还可以在设置-->应用程序-->您的应用程序->权限中检查权限,对于大于23的Android SDK版本,您需要在运行时通过对话框提示请求权限。因此,您必须使用
react native
中的
PermissionsAndroid
才能实现这一点

差不多

try {
    if (Platform.OS === 'android') {
      const granted = yield call(
        PermissionsAndroid.request,
        PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE
      ); // I used redux saga here. 'yield' keywoard. You don't have to use that. You can use async - await or Promises.

      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        // Your Save flow
      }
    } else {
      // iOS here, so you can go to your Save flow directly
    }
  } catch (e) {
    console.log(e);
  }
}
您应该查看:

您有两次“写入外部存储”。删除一次