Я использую rn-fetch-blobhttps://github.com/joltup/rn-fetch-blob. Я создаю новый файл и сохраняю его в папке загрузок. Примечание. Я использую эмулятор. Теперь, когда я пытаюсь создать новый файл и использую каталог загрузки, см. это -> https://github.com/joltup/rn-fetch-blob/wiki/File-System-Access-API#dirs, но я получаю сообщение об ошибке, говорящее, что в разрешении отказано, почему так? Как я могу включить разрешение, чтобы файл сохранялся в папке загрузки в собственном приложении Android?
Код:
saveFile = () => {
const fs = RNFetchBlob.fs;
const dirs = RNFetchBlob.fs.dirs;
console.info("directory path: ",dirs.DownloadDir );
const NEW_FILE_PATH = dirs.DownloadDir + '/demo.txt';
console.info("file path: ", NEW_FILE_PATH);
fs.createFile(NEW_FILE_PATH, 'foo', 'utf8');
}
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" />
Снимок экрана:



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


вам нужен <uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE" />
Если вы используете версию Android 6 или выше, вам необходимо запросить разрешение во время выполнения.
Я добавил эти 2 строки в файл androidManifest.xml, но все еще получаю ту же проблему, почему так?
хорошо, просто зайдите в настройки приложения, затем разрешение, дайте разрешение на хранение и попробуйте
@kritika Ок, исправил проблему. Для реагирования на собственный Android вам не нужно добавлять использование-разрешение android:name = "android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE" /> эти строки. Смотрите мой измененный ответ.
Чтобы разрешить доступ к другим каталогам в rn-fetch-blob, если версия Android выше 6, вам нужно запросить разрешение во время выполнения. Ссылка: https://facebook.github.io/react-native/docs/permissionandroid
Модифицированный код:
import {PermissionsAndroid} from 'react-native';
saveFile = async () => {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.info("Permission granted");
const fs = RNFetchBlob.fs;
// const base64 = RNFetchBlob.base64;
const dirs = RNFetchBlob.fs.dirs;
console.info(dirs.DownloadDir);
const NEW_FILE_PATH = dirs.DownloadDir + '/test.txt';
fs.createFile(NEW_FILE_PATH, 'foo', 'utf8');
} else {
console.info('Permission denied');
}
} catch (err) {
console.warn(err);
}
}
Дополнительные ссылки для rn-fetch-blob:
1) https://github.com/joltup/rn-fetch-blob/wiki/File-System-Access-API#dirs
2) https://github.com/joltup/rn-fetch-blob
Привет, я получаю отказ от необработанного обещания с этим кодом.? Пожалуйста помоги. Я пытаюсь записать файл в папку «Загрузки».
Я использую Android 9 API 28