【问题标题】:RNFetchBlob.fs.mkdir executes successfully but doesn't create directoryRNFetchBlob.fs.mkdir 执行成功但不创建目录
【发布时间】:2020-11-15 01:22:35
【问题描述】:

我正在尝试使用 RNFetcBlob 在下载文件夹中创建目录。 它不会抛出任何错误,但不会创建文件夹......

这是我正在使用的方法...

async createAppDir() {
        const granted = await PermissionsAndroid.request(
            PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE
        );

        if (granted === PermissionsAndroid.RESULTS.GRANTED) {
            RNFetchBlob.fs.exists(GlobalVars.APPDIR)
                .then((res) =>
                    {
                        if (!res) {
                            console.log("Creating App directory...", GlobalVars.APPDIR)
                            RNFetchBlob.fs.mkdir(GlobalVars.APPDIR)
                                .then((res) => {console.log("App directory created..")})
                                .catch((err) => {console.log(err)})
                        }
                    }
                );
        }
    }

我在 AndroidManifest.xml 中添加了权限..

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

控制台日志....

[Sat Jul 25 2020 10:16:30.966]  LOG      Creating App directory... /storage/emulated/0/Download/gifit/
[Sat Jul 25 2020 10:16:30.967]  LOG      App directory created..

【问题讨论】:

    标签: react-native mkdir rn-fetch-blob


    【解决方案1】:

    我在 android/bundle.gradle 文件中更改了以下版本,它开始工作....

    更改为以下版本

    buildToolsVersion = "29.0.2"
    minSdkVersion = 16
    compileSdkVersion = 29
    targetSdkVersion = 29
    

    buildToolsVersion = "28.0.3"
    minSdkVersion = 16
    compileSdkVersion = 28
    targetSdkVersion = 28
    

    【讨论】:

      【解决方案2】:

      试试这个

      async createAppDir() {
          const granted = await PermissionsAndroid.request(
              PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE
          );
      
          const isGranted = granted === PermissionsAndroid.RESULTS.GRANTED || granted === true;
      
          if (isGranted === PermissionsAndroid.RESULTS.GRANTED) {
              const assetsDirExists = await RNFetchBlob.fs.isDir(GlobalVars.APPDIR);
              if(!assetsDirExists) {
                  RNFetchBlob.fs.mkdir(GlobalVars.APPDIR)
                                  .then((res) => {console.log("App directory created..")})
                                  .catch((err) => {console.log(err)})
              }
          }
      }
      

      【讨论】:

      • 我试过你的代码,它甚至没有输入 if 条件 if (isGranted === PermissionsAndroid.RESULTS.GRANTED) {.....我不得不把它改成 if (isGranted) { 和运行它.....这次它进入了if条件但文件夹没有创建......它打印“App directory created..”但是当在下载文件夹中检查时我看不到文件夹......
      猜你喜欢
      • 2016-04-07
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 2018-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多