TGViewer
Android Good Reads Android Good Reads @droidgr · 4.02K subscribers
Post #2172 3.8K
Разбираемся с FileProvider

Банальная вещь, но сэкномит вам время

👉 Базово в манифесте определяем провайдер. Решаем нужно ли давать разрешениями на пользование нашими данными другим приложениям (grantUriPermissions, exported)
👉 Определяем <paths>:
<files-path> Для файлов внутреннего хранилища ([pm]/files/)
<cache-path> Для кэша ([pm]/cache/)
<external-path> Внешнее хранилище (/storage/emulated/0/). Учитывайте, что доступ сюда будет иметь любое приложение и без вашего ведома
<external-files-path> Внешнее приватное хранилище (/storage/emulated/0/Android/data/[package_name]/files/)
<external-cache-path> Внешний приватный кэш (/storage/emulated/0/Android/data/[package_name]/cache/)
<root-path> Доступ напрямую из корня. Тут надо осторожно, у вашего приложения может не быть прав на запись
👉 Не забываем про permissions. Можно обойтись без прямого доступа к файловой системе:


intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);


Пример использования для того чтобы пошарить картинку из кэша в email без выгрузки bitmap:


val imagePath = File(context.getCacheDir(), "images")
val newFile = File(imagePath, "image.png")
val contentUri = FileProvider.getUriForFile(context, "com.example.myapp.fileprovider", newFile)

if (contentUri != null) {
val shareIntent = Intent()
shareIntent.setAction(Intent.ACTION_SEND)
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
shareIntent.setDataAndType(contentUri, context.getContentResolver().getType(contentUri))
shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri)
startActivity(Intent.createChooser(shareIntent, "Choose an app"))
}
  • 👍 14
  • 🫡 6
  • 🔥 2
More from @droidgr
  1. Sep 30, 2026🏗 Строим мультиагентные системы для разработки на Podlodka AI Crew Инженерные задачи редк…
  2. Aug 6, 2026Если вам всё ещё интересна мобильная разработка, рекомендую подписаться на канал Kotlin Ad…
  3. Aug 4, 2026Post #2504
  4. Jul 26, 2026Как я играю в экосистему продуктов Наиболее близка мне сейчас тема ухода за животными. Я м…
  5. Jul 26, 2026Привет! Как вы могли заметить, я более не помогаю вести данный канал. Если вам понравилось…
  6. Jun 10, 2026Немного про продуктивность без AI. Старый добрый помодоро таймер, но ужесточенный трекинго…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →