react-native - rn-fetch-blob 自动请求存储
问题描述
我尝试使用 rn-fetch-blob 下载 pdf 文件,首先我在AndroidManifest.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.DOWNLOAD_WITHOUT_NOTIFICATION" />
然后我使用这段代码:
_downloadFile2 = () => {
let DownloadDir = RNFetchBlob.fs.dirs.DownloadDir
let options = {
fileCache: true,
addAndroidDownloads : {
useDownloadManager : true,
notification : true,
title : "file name",
path: DownloadDir + '/' + "fileName"+ '.' + 'pdf',
description : 'download fileName'
}
}
RNFetchBlob.config(options)
.fetch('GET', 'link....')
.catch((err) => {console.warn('error' + err)})
};
我的代码工作正常,但我必须手动设置存储权限,我想要的是自动请求存储,就像我想使用相机时一样它不适用于存储!
第二个想法是我不能下载我的文件两次。第一次(手动允许存储权限后)它工作正常但是当我单击按钮重新下载它时我有一个错误或者它没有任何东西取决于我所拥有的模拟器错误:1.消息警报“下载不成功' 2. 我控制台.wanr 错误,我有这个:Error: Download manager failed to download from 'link...' Status Code = 16
我认为cach有问题,但我不知道该怎么办
解决方案
手动请求权限:
import { PermissionsAndroid, Platform } from 'react-native'
_downloadFile2 = async () => {
if (Platform.OS === 'android') {
await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE)
await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE)
}
}
// rest of the code
另外,请记住,在您没有的 iOS 上fs.dirs.DownloadDir
,您应该fs.dirs.DocumentDir
仅用于 iOS。
推荐阅读
- python - ValueError:调用层“sequential_5”时遇到异常(类型Sequential)
- osgi - 将 AEM 6.5.1 升级到 6.5.10 时缺少依赖项
- dataweave - 什么是匹配 dataweave 中 URL 的好正则表达式?
- android - 如何在 Play 管理中心将应用版本从生产移动到内部测试?
- javascript - 为 React Native 创建 NPM 包时如何解决 iOS 中出现的问题?
- javascript - 需要在一个一个点击的时候打印一个数字
- c++ - C++ SafeSingleton 3 级继承
- jestjs - 如何在 Jest 的方法中模拟嵌套实例方法?
- view - 如果我的视图按钮被visualforce页面覆盖,如何配置案例提要
- security - 将后端身份验证令牌附加到响应 URL 时是否存在安全问题?