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

Класс FileUriExposedException

Класс FileUriExposedException срабатывает на Android 7 и выше, когда intent или chooser получает Uri со схемой file на файл вашего приложения. Прямой путь нельзя отдавать чужим процессам. Вместо этого строят content:// через FileProvider и флаг FLAG_GRANT_READ_URI_PERMISSION.

Пример

Давайте отдадим файл через FileProvider, а не file URI:

import android.content.Intent 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, ) val share = Intent(Intent.ACTION_SEND).apply { type = "text/plain" putExtra(Intent.EXTRA_STREAM, uri) addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) } setContent { Text(text = uri.scheme ?: "abcde") } } }

С content URI система не бросает FileUriExposedException. Схема file в intent к другому приложению приведёт к падению.

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

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить