使用ionic/cordova应用程序将文件写入SD卡根目录

inb24sb2  于 2023-04-12  发布在  Ionic
关注(0)|答案(1)|浏览(204)

我需要将文件写入sd卡的根目录。我使用cordova-diagnostic-plugin中的getExternalSdCardDetails()函数。并得到如下内容:

[{
     "path": "/storage/4975-1401/Android/data/cordova.plugins.diagnostic.example/files",
     "filePath": "file:///storage/4975-1401/Android/data/cordova.plugins.diagnostic.example/files",
     "canWrite": true,
     "freeSpace": 16254009344,
     "type": "application"
 }, {
     "path": "/storage/4975-1401",
     "filePath": "file:///storage/4975-1401",
     "canWrite": false,
     "freeSpace": 16254009344,
      "type": "root"
}]

所以,我不能写file:///storage/4975-1401,因为"canWrite": false我已经添加了

<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<preference name="AndroidExtraFilesystems" value="files,files-external,documents,sdcard,cache,cache-external,assets,root" />

config.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

AndroidManifest.xml,但没有结果,当我尝试写文件到根目录,我得到错误CODE 5 ENCODING_ERR
写入/storage/4975-1401/Android/data/cordova.plugins.diagnostic.example/files正在工作。

k4emjkb1

k4emjkb11#

自Android 4.4 Kitkat起,非系统应用对其应用沙盒区域(/Android/data/[package-id]/)以外的辅助存储卷(即可移动SD卡)拥有只读权限。See here了解更详细的说明。
因此,getExternalSdCardDetails()函数正确地通知您可以写入应用程序沙箱目录/storage/4975-1401/Android/data/cordova.plugins.diagnostic.example/files,但不能写入根目录/storage/4975-1401/
在Android 4.4及更高版本上没有办法解决这个问题,除非设备是root的。

相关问题