Ali*_*orm 5 android sd-card android-sdcard cordova cordova-plugins
在一个cordova Android应用程序(滚动到底部的设备,版本,插件列表,所有这些都是最新的写作)我想优先存储外部SD卡上的文件,并使用内部存储,如果SDCard不存在.我将保存路径设置为:
persistentFS= cordova.file.externalDataDirectory||cordova.file.DataDirectory||fileSystem.root.toURL();
它的最终值是file:///storage/emulated/0/Android/data/com.fubar.app/files/,与cordova.file.externalDataDirectory相同.
我
<access origin="cdvfile://*" />
...
<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<preference name="AndroidExtraFilesystems" value="files-external,sdcard,files,documents,cache,cache-external,root" />
在config.xml中
设置了:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在AndroidManifest.xml中并在index.html Security metatag中设置各种附魔.我添加了一个SD卡插入,写入启用,我确认我可以写入 - 例如 - 文件管理器.它包含Android/data/com.fubar.myapp/files /文件夹.
一切都是:文件被写入 - 并从内部设备存储读取.我已经阅读了关于这个主题的所有谷歌,但没有任何东西让我更接近任务(一些人建议使用文件系统根插件,但它似乎已被文件插件包含).
任何提示?TIA,alf
编辑:使用adb shell,我可以看到应用程序的外部sdcard文件文件夹的绝对路径为:
`/storage/extSdCard/Android/data/com.fubar.myapp/files`
Run Code Online (Sandbox Code Playgroud)
并调用resolveLocalFileSystemURL
file:///storage/extSdCard/Android/data/com.fubar.myapp/files
愉快地成功.我不认为这是要走的路,因为该路径取决于设备.
设备:Samsung Galaxy tab 10.5,lollipop 5.0.1使用cordova 5.3.1,带插件:cordova-plugin-device 1.0.1"Device"cordova-plugin-dialogs 1.1.1"Notification"cordova-plugin-file 3.0.0 "文件"cordova-plugin-file-transfer 1.3.0"文件传输"cordova-plugin-media 1.0.1"媒体"cordova-plugin-whitelist 1.1.0"白名单"
构建主机是Linux FC21
你可以打电话Context.getExternalFilesDirs()。这会返回一个目录数组,您的应用程序可以向其中写入数据。其中之一是 sdcard 路径 /storage/sdcardname/Android/data/appname/files。
大多数制造商还设置 SECONDARY_STORAGE 环境变量来公开 SD 卡根路径。您可以尝试拨打电话System.getenv("SECONDARY_STORAGE")
Android 没有公开任何允许您获取 sdcard 根路径的 API。您可以使用反射并从 StorageManager.java -> getVolumePaths() - http://androidxref.com/5.1.1_r6/xref/frameworks/base/core/java/android/os/storage/StorageManager 获取 sdcard 根路径。 java#590
| 归档时间: |
|
| 查看次数: |
3516 次 |
| 最近记录: |