使用 Cordova FileTransfer 将文件保存到 public 目录
Save file to public directory using Cordova FileTransfer
我需要在我的移动设备上下载文件并让其他应用程序可以访问它们(使用 Android 和 iOS)。
我设法将一个文件下载到 SD 卡 (cordova.file.externalDataDirectory),但这只存在于 Android 上,即便如此我也不能依赖每个设备都有 SD 卡。
当我下载到设备存储 (cordova.file.dataDirectory) 时,该文件对我的应用程序是私有的,因此其他应用程序无法访问。该文件可以在 InAppBrowser 中打开,但我更愿意使用相应的默认应用程序。
有没有办法获取所有设备上公开可用的目录路径?
中建议的解决方案返回的路径在 Android 上都是私有的...
编辑:
我想我应该描述我的用例,以便更清楚我想要实现的目标:我想使用相应的默认应用程序从我的 应用聊天 打开文件( pdf 查看器、图像查看器等)。因为 Cordova File Opener plugin 只接受来自本地文件系统的文件,所以我需要先保存它们。但之后它们不一定需要从我的应用程序外部访问...
在Android,外部存储目录始终存在;如果设备没有物理 SD 卡,Android 将模拟它。见 getExternalStorageDirectory :
Note: don't be confused by the word "external" here. This directory
can better be thought as media/shared storage. It is a filesystem that
can hold a relatively large amount of data and that is shared across
all applications (does not enforce permissions). Traditionally this is
an SD card, but it may also be implemented as built-in storage in a
device that is distinct from the protected internal storage and can be
mounted as a filesystem on a computer.
因此 cordova.file.externalDataDirectory
将始终解决。但是,为了在应用程序之间共享数据,您可能需要使用 cordova.file.externalRootDirectory
- 外部存储(SD 卡)root。参见 cordova-plugin-file。
这样您就可以将文件存储在一个更容易从其他应用访问的地方,例如/sdcard/my_shared_data/
在 iOS 上,共享文件更加困难,因为应用程序由于安全策略而有意彼此隔离,正如 Apple 的 Inter-App Communication Guide 所说:
Apps communicate only indirectly with other apps on a device
iOS 你最好的选择是通过 iCloud 同步数据来共享数据。请参阅 iCloud 设计指南中的 Configuring a Common Ubiquity Container for Multiple Apps 部分,其中指出:
... perhaps you provide two apps that interoperate and need
access to each other’s files. In both of these examples, you obtain
the needed access by specifying a common ubiquity container and then
requesting access to it from each app.
我需要在我的移动设备上下载文件并让其他应用程序可以访问它们(使用 Android 和 iOS)。
我设法将一个文件下载到 SD 卡 (cordova.file.externalDataDirectory),但这只存在于 Android 上,即便如此我也不能依赖每个设备都有 SD 卡。
当我下载到设备存储 (cordova.file.dataDirectory) 时,该文件对我的应用程序是私有的,因此其他应用程序无法访问。该文件可以在 InAppBrowser 中打开,但我更愿意使用相应的默认应用程序。
有没有办法获取所有设备上公开可用的目录路径?
中建议的解决方案返回的路径在 Android 上都是私有的...
编辑:
我想我应该描述我的用例,以便更清楚我想要实现的目标:我想使用相应的默认应用程序从我的 应用聊天 打开文件( pdf 查看器、图像查看器等)。因为 Cordova File Opener plugin 只接受来自本地文件系统的文件,所以我需要先保存它们。但之后它们不一定需要从我的应用程序外部访问...
在Android,外部存储目录始终存在;如果设备没有物理 SD 卡,Android 将模拟它。见 getExternalStorageDirectory :
Note: don't be confused by the word "external" here. This directory can better be thought as media/shared storage. It is a filesystem that can hold a relatively large amount of data and that is shared across all applications (does not enforce permissions). Traditionally this is an SD card, but it may also be implemented as built-in storage in a device that is distinct from the protected internal storage and can be mounted as a filesystem on a computer.
因此 cordova.file.externalDataDirectory
将始终解决。但是,为了在应用程序之间共享数据,您可能需要使用 cordova.file.externalRootDirectory
- 外部存储(SD 卡)root。参见 cordova-plugin-file。
这样您就可以将文件存储在一个更容易从其他应用访问的地方,例如/sdcard/my_shared_data/
在 iOS 上,共享文件更加困难,因为应用程序由于安全策略而有意彼此隔离,正如 Apple 的 Inter-App Communication Guide 所说:
Apps communicate only indirectly with other apps on a device
iOS 你最好的选择是通过 iCloud 同步数据来共享数据。请参阅 iCloud 设计指南中的 Configuring a Common Ubiquity Container for Multiple Apps 部分,其中指出:
... perhaps you provide two apps that interoperate and need access to each other’s files. In both of these examples, you obtain the needed access by specifying a common ubiquity container and then requesting access to it from each app.