2016-01-20 2 views
0

Мне нужно разделить каталог внутреннего хранилища appA с appB, чтобы appB мог записать в него набор файлов. Число и имена файлов не известны априори appA.Разрешить другому приложению писать набор файлов с помощью FileProvider

Для этого я придумал эту стратегию:

  1. Настройка FileProvider в Аппа
  2. Во время акций, APPA использует grantUriPermission с FLAG_GRANT_WRITE_URI_PERMISSION, чтобы поделиться каталог с AppB, не файл.
  3. Затем appB запускает намерение appB с Uri, указывающим на общий каталог.
  4. appB получает намерение, получает uri внутри него и использует Uri.withAppendedPath для генерации URI для дочернего файла.
  5. appB использует ContextResolves для записи в childUri
  6. appB повторяет # 5 и # 6 для каждого файла, который он хочет записать.

Это не работает, потому что разрешение не распространяется на дочерний uris. Что может быть сделано?

ответ

0

Я понял решение. Если вы используете FLAG_GRANT_WRITE_URI_PERMISSION | FLAG_GRANT_PREFIX_URI_PERMISSION в grantUriPermission, разрешение будет применяться к любому дочернему URL-адресу грантового.