Ответ 1
В Android всегда существуют внешние каталоги хранения; если устройство не имеет физической SD-карты, Android будет эмулировать его. см. getExternalStorageDirectory:
Примечание. Не путайте слово "внешний" здесь. Этот каталог лучше рассматривать как носитель/общий накопитель. Это файловая система, которая может хранить относительно большой объем данных и все приложения (не применяют разрешения). Традиционно это SD-карту, но она также может быть реализована как встроенное хранилище в устройство, которое отличается от защищенного внутреннего хранилища и может быть смонтирован как файловая система на компьютере.
Поэтому cordova.file.externalDataDirectory
всегда будет разрешаться. Однако для обмена данными между приложениями вы, вероятно, захотите использовать корень cordova.file.externalRootDirectory
- External storage (SD card). См. cordova-plugin-file.
Таким образом, вы можете хранить файлы в месте, куда проще получить доступ из другого приложения, например. /sdcard/my_shared_data/
В iOS более сложно обмениваться файлами, потому что приложения намеренно изолированы друг от друга из-за политики безопасности, так как Apple "Руководство по взаимодействию между приложениями" говорит:
Службы общаются только косвенно с другими приложениями на устройстве
Лучше всего делать ставку на iOS, чтобы делиться данными, синхронизируя их через iCloud. См. Раздел Настройка контейнера общей Ubiquity для нескольких приложений в iCloud Design Guide, в котором говорится:
... возможно, вы предоставляете два приложения, которые взаимодействуют и нуждаются в доступ к файлам друг друга. В обоих этих примерах вы получаете необходимый доступ, указав общий контейнер для повсеместности, а затем запрашивая доступ к нему из каждого приложения.