Android 11下使用cordova_file_plugin时应用文件夹无法访问的解决方案咨询
解决Cordova File Plugin保存文件无法访问的问题
一、访问Android/Data下的隐藏应用文件夹
- 开启文件管理器的「显示隐藏文件」选项:不同品牌设备操作略有差异,比如:
- 小米/Redmi:打开文件管理器 → 右上角「⋮」→ 设置 → 开启「显示隐藏文件」
- 三星:文件管理器菜单 → 设置 → 开启「显示隐藏项目」
- 原生Android:文件管理器右上角菜单 → 「显示隐藏文件」
- 用ADB命令提取文件:把设备连到电脑,执行以下命令(替换成你的应用包名和目标文件名):
adb pull /sdcard/Android/data/你的应用包名/files/目标文件名
二、把文件存到公共可访问文件夹
建议把文件存到系统公共目录(比如Downloads、Documents),这些目录不用开隐藏文件就能直接访问,操作步骤如下:
1. 配置权限
在config.xml里添加对应权限(适配不同Android版本):
<!-- Android 12及以下版本权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- Android 13+ 细分权限 --> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
2. 修改保存路径代码
把原来的externalDataDirectory换成公共目录路径,以存到Downloads文件夹为例:
this.file.writeFile(this.file.externalPublicDirectory + '/Download/', fileName, csv, {replace: true}) .then(res => { const msg = 'CSV文件已成功导出,可在设备的「下载」文件夹中查看。'; this.toastsService.showSuccessMessage(msg); }) .catch(err => { console.error('文件保存失败:', err); this.toastsService.showErrorMessage('导出失败,请检查权限设置。'); });
可选:存到Documents文件夹
只需把路径改成this.file.externalPublicDirectory + '/Documents/'就行,代码示例:
this.file.writeFile(this.file.externalPublicDirectory + '/Documents/', fileName, csv, {replace: true}) .then(res => { const msg = 'CSV文件已成功导出,可在设备的「文档」文件夹中查看。'; this.toastsService.showSuccessMessage(msg); }) .catch(err => { console.error('文件保存失败:', err); this.toastsService.showErrorMessage('导出失败,请检查权限设置。'); });
注意事项
- Android 10(API 29)及以上启用了Scoped Storage,要确保cordova-plugin-file用的是最新版本,避免适配问题。
- 如果弹出权限申请弹窗,要引导用户允许相关权限。
内容的提问来源于stack exchange,提问作者Islam Mohamed
相关产品推荐
相关产品推荐

