Javascript 如何创建文件并将其存储在android下载文件夹中?

Javascript 如何创建文件并将其存储在android下载文件夹中?,javascript,android,reactjs,react-native,Javascript,Android,Reactjs,React Native,我正在使用rn fetch blob创建新文件并将其存储在下载文件夹中。注意:我使用的是emulator。现在,当我尝试创建一个新文件时,我正在使用download dir查看此->但我收到一个错误,说权限被拒绝,为什么?我如何启用权限,以便文件存储在android react本机应用程序的下载文件夹中 代码: AndroidManifest.xml: <uses-permission android:name="android.permission.INTERNET" />

我正在使用
rn fetch blob
创建新文件并将其存储在下载文件夹中。注意:我使用的是emulator。现在,当我尝试创建一个新文件时,我正在使用download dir查看此->但我收到一个错误,说权限被拒绝,为什么?我如何启用权限,以便文件存储在android react本机应用程序的下载文件夹中

代码:

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.ACCESS_FINE_LOCATION" />
    <uses-permission tools:node="remove" android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission tools:node="remove" android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission tools:node="remove" android:name="android.permission.READ_EXTERNAL_STORAGE" />

截图:

您需要


如果您使用的是android 6版本或更高版本,则需要请求运行时权限

以允许访问rn fetch blob中的其他目录如果android版本高于6,则需要请求运行时权限。链接:

修改代码:

import {PermissionsAndroid} from 'react-native';

    saveFile = async () => {

            try {
                const granted = await PermissionsAndroid.request(
                    PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE
                );
                if (granted === PermissionsAndroid.RESULTS.GRANTED) {
                    console.log("Permission granted");

                    const fs = RNFetchBlob.fs;
                    // const base64 = RNFetchBlob.base64;

                    const dirs = RNFetchBlob.fs.dirs;
                    console.log(dirs.DownloadDir);

                    const NEW_FILE_PATH = dirs.DownloadDir + '/test.txt';
                    fs.createFile(NEW_FILE_PATH, 'foo', 'utf8');

                } else {
                    console.log('Permission denied');
                }
                } catch (err) {
                    console.warn(err);
                }

        }
rn fetch blob的其他链接:

(一)


2)

我使用的是android 9 API 28,我在androidManifest.xml文件中添加了这两行,但仍然遇到同样的问题为什么?好的,只需转到应用程序设置,然后是权限,授予存储权限和try@kritika好的,解决了这个问题。对于你不喜欢的本地android;不需要添加使用权限android:name=“android.permission.READ\u EXTERNAL\u STORAGE”/>这些行。查看我的修改答案。您好,我收到了此代码未处理的拒绝承诺。?请帮忙。我正在尝试将文件写入下载文件夹。
import {PermissionsAndroid} from 'react-native';

    saveFile = async () => {

            try {
                const granted = await PermissionsAndroid.request(
                    PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE
                );
                if (granted === PermissionsAndroid.RESULTS.GRANTED) {
                    console.log("Permission granted");

                    const fs = RNFetchBlob.fs;
                    // const base64 = RNFetchBlob.base64;

                    const dirs = RNFetchBlob.fs.dirs;
                    console.log(dirs.DownloadDir);

                    const NEW_FILE_PATH = dirs.DownloadDir + '/test.txt';
                    fs.createFile(NEW_FILE_PATH, 'foo', 'utf8');

                } else {
                    console.log('Permission denied');
                }
                } catch (err) {
                    console.warn(err);
                }

        }