Отправить svg файл по почте

134
31 августа 2021, 01:30

Создал svg файл, нужно его отправить по почте, но я что-то делаю не так:

File file=new File(getFilesDir(), FILENAME);
    Intent email = new Intent(Intent.ACTION_SEND);
   if (file.exists()) {
       email.putExtra(Intent.EXTRA_EMAIL, new String[]{etMail.getText().toString()});
       email.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+file));
       email.putExtra(Intent.EXTRA_SUBJECT, "Subject");
       email.putExtra(Intent.EXTRA_TEXT, "text");
       email.setType("message/rfc822");
      // email.setType("*/*");
       startActivity(Intent.createChooser(email, "Выберите email клиент :"));}

Приложение падает по строке

 email.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+file));

с ошибкой:

android.os.FileUriExposedException: file:///data/user/0/ru.test/files/file.svg exposed beyond app through ClipData.Item.getUri()

Answer 1

Начиная с API 24 (по моему) запрещается использование в Intent ссылок типа file://, необходимо их маскировать специальным FileProvider, который умеет превращать ссылки file:// в content://

Инструкции здесь

READ ALSO
Почему одинаковые программы на Python и Java работают по разному (или почти одинаковые)?

Почему одинаковые программы на Python и Java работают по разному (или почти одинаковые)?

Вы, наверное, посчитаете этот вопрос глупым, но все же

153
Удалённый дебаг Java приложения

Удалённый дебаг Java приложения

Есть VPS сервер на Debian 9На сервере крутится одно самописное Java приложение

95
ResultSet возвращает неверное время из DATETIME

ResultSet возвращает неверное время из DATETIME

ResultSet возвращает неверное время из DATETIMEПри извлечении значения времени количество часов увеличивается на 3, т

77
No Dialect mapping for JDBC type: 1111

No Dialect mapping for JDBC type: 1111

пытаюсь с помощью нативного запроса получить список данных из посгриса, но ругается на диалект, не догоню как сделать

193