如何在react-native-blob-util中获取旧版存储路径?
解决react-native-blob-util中LegacyDownloadDir返回undefined的问题
核心原因
LegacyDownloadDir 并非默认可用属性,它需要在Android项目中开启旧版外部存储访问模式后才会被初始化;同时官方TypeScript类型定义默认未包含该字段,所以会出现类型识别报错。
具体解决步骤
1. 配置Android项目权限与存储模式
打开android/app/src/main/AndroidManifest.xml:
- 添加适配Android 32及以下版本的存储权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> - 在
<application>标签内开启旧版存储访问模式:<application ... android:requestLegacyExternalStorage="true" ...>
2. 修复TypeScript类型识别问题
在项目根目录或src文件夹下创建类型声明文件(比如react-native-blob-util.d.ts),扩展原有类型:
declare module 'react-native-blob-util' { import type { Directories as OriginalDirectories } from 'react-native-blob-util'; export interface Directories extends OriginalDirectories { LegacyDownloadDir?: string; } }
3. 重新编译项目
执行命令清理缓存并重新构建Android项目:
cd android && ./gradlew clean && cd .. && npx react-native run-android
完成以上操作后,再次调用ReactNativeBlobUtil.fs.dirs.LegacyDownloadDir即可获取到/storage/emulated/0/Download/这个旧版下载目录路径。
内容的提问来源于stack exchange,提问作者Abderrahim Ajakka
相关产品推荐
相关产品推荐

