Сохранить файл в общедоступном каталоге с помощью Cordova FileTransfer

Мне нужно загрузить файлы на мобильное устройство и сделать их доступными для других приложений (с помощью Android и iOS).

Мне удалось загрузить файл на SD-карту ( cordova.file.externalDataDirectory ), но это существует только на Android, и даже тогда я не могу полагаться на каждое устройство, имеющее SD-карту.

Когда я загружаюсь в хранилище устройств ( cordova.file.dataDirectory ), файл является приватным для моего приложения и поэтому недоступен для других приложений. Файл можно открыть в InAppBrowser, но я предпочел бы использовать соответствующее приложение по умолчанию.

Есть ли способ получить доступ к общедоступной директории на всех устройствах?

Пути, возвращаемые решением, предложенным в https://stackoverflow.com/a/21375812/3432305, являются частными на Android …

РЕДАКТИРОВАТЬ:

Я думаю, что я должен описать свой вариант использования, так что яснее, чего я пытаюсь достичь: я хочу открывать файлы из своего приложения в чате приложения, используя соответствующее приложение по умолчанию (просмотрщик PDF, просмотрщик изображений и т. Д.). Поскольку плагин File Opener от Cordova принимает файлы только из локальной файловой системы, сначала мне нужно их сохранить. Но после этого они не обязательно должны быть доступны из-за пределов моего приложения …

Solutions Collecting From Web of "Сохранить файл в общедоступном каталоге с помощью Cordova FileTransfer"

На Android всегда существуют внешние каталоги хранения; Если устройство не имеет физической SD-карты, Android будет эмулировать его. См. GetExternalStorageDirectory :

Примечание. Не путайте слово «внешний» здесь. Этот каталог лучше воспринимать как медиа / общий накопитель. Это файловая система, которая может хранить относительно большой объем данных и совместно используется во всех приложениях (не обеспечивает принудительное выполнение). Традиционно это SD-карта, но она также может быть реализована как встроенное хранилище на устройстве, которое отличается от защищенного внутреннего хранилища и может быть смонтировано как файловая система на компьютере.

Поэтому cordova.file.externalDataDirectory всегда будет разрешаться. Однако для обмена данными между приложениями вы, вероятно, захотите использовать cordova.file.externalRootDirectorycordova.file.externalRootDirectory внешней памяти (SD-карты). См. Файл cordova-plugin-файл .

Таким образом, вы можете хранить файлы в месте, /sdcard/my_shared_data/ проще получить доступ из другого приложения, например /sdcard/my_shared_data/

В iOS более сложно обмениваться файлами, потому что приложения намеренно изолированы друг от друга из-за политики безопасности, поскольку руководство Apple по взаимодействию с приложениями говорит:

Службы общаются только косвенно с другими приложениями на устройстве

Лучше всего на iOS – делиться данными, синхронизируя их через iCloud. См. Раздел « Настройка контейнера общей Ubiquity для нескольких приложений в iCloud Design Guide», в котором говорится:

… возможно, вы предоставляете два приложения, которые взаимодействуют друг с другом и нуждаются в доступе к файлам друг друга. В обоих этих примерах вы получаете необходимый доступ, указав общий контейнер вездесущности, а затем запрашивая доступ к нему из каждого приложения.