Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
282 of 502 menu
◀ ▶

Класс FileProvider

Класс FileProvider из AndroidX наследует ContentProvider и выдаёт временный content:// URI на файл в каталоге приложения. Прямой URI схемы file для обмена между приложениями не подходит: получатель не имеет прав на чужой путь. URI строят статическим методом getUriForFile с authority из манифеста. URI передают в Intent с флагом FLAG_GRANT_READ_URI_PERMISSION.

Синтаксис

FileProvider.getUriForFile(context, authority, file)

Пример

Давайте получим content URI для файла в cache:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Text import androidx.core.content.FileProvider import java.io.File class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val file = File(cacheDir, "abcde.txt") file.writeText("12345") val uri = FileProvider.getUriForFile( this, "${packageName}.fileprovider", file, ) setContent { Text(text = uri.scheme ?: "abcde") } } }

На экране текст "content" как схема URI, готового для передачи другому приложению.

Смотрите также

  • класс Intent,
    в который кладут uri файла
  • класс Context,
    который передают в getUriForFile
  • метод startActivity,
    которым открывают viewer с uri
  • класс LocalContext,
    который даёт context для FileProvider в Compose
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить