Невозможно прикрепить векторное изображение из прорисовки в Email на Android Studio - PullRequest
0 голосов
/ 19 октября 2019

Hello. У меня проблемы с прикреплением векторных изображений из списка на электронную почту. Выполнение говорит, что не может прикрепить пустой файл.

public void enviarCorreu(View view) {

EditText t = findViewById(R.id.editText);
String email = t.getText().toString();

Drawable drawable = this.getResources().getDrawable(R.drawable.face);

Intent intent = new Intent(Intent.ACTION_SEND);
File f = new File(Uri.parse("android.resource://"+"com.example.m8_activitat2_tematicalliure/"+drawable).toString());

intent.putExtra(Intent.EXTRA_EMAIL,new String[]{email});
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_SUBJECT,email);
intent.putExtra(Intent.EXTRA_TEXT,"Missatge enviat de la imatge");
intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(f));

startActivity(Intent.createChooser(intent,"Enviant Correu ... "));
}

1 Ответ

0 голосов
/ 19 октября 2019

Проблема № 1: Вы используете неправильную схему Uri.

Документация для EXTRA_STREAM состояний:

Содержание: URIсодержит поток данных, связанных с намерением, который используется с ACTION_SEND для предоставления отправляемых данных.

Вы используете схему android.resource:, которая не является content:. Таким образом, некоторые приложения, которые пытаются ответить на ваш Intent, не будут знать, как обрабатывать вашу Uri.


Проблема №2: вы не предоставляете конкретный тип MIME.

У вас есть:

intent.setType("image/*");

Это недопустимо. Это ваш контент, поэтому вы должны предоставить тип MIME.


Проблема № 3: Не существует типа MIME, который представляет векторный ресурс для рисования.

Вы не можете сообщить принимающему приложению, в каком формате он находится, так как этот формат не предназначен для передачи между приложениями.


Если вы хотите использовать ACTION_SEND сEXTRA_STREAM:

  • Используйте ContentProvider, например FileProvider, для показа своего контента, так что вы получите content: Uri для использования в EXTRA_STREAM

  • У этого контента должен быть тип распознаваемого MIME, и используйте этот тип MIME в Intent (например, image/jpeg, image/png)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...