无法将矢量图像从可绘制对象附加到安卓工作室上的电子邮件



你好。我在将矢量图像从可绘制对象附加到电子邮件时遇到问题。执行显示无法附加空文件。

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:您使用了错误的Uri方案。

EXTRA_STREAM的文档指出:

内容:保存与目的关联的数据流的 URI,与ACTION_SEND一起使用以提供正在发送的数据。

您正在使用android.resource:方案,这不是content:。因此,某些尝试响应您的Intent的应用程序将不知道如何处理您的Uri


问题#2:您没有提供具体的MIME类型。

你有:

intent.setType("image/*");

这是无效的。这是您的内容,因此您必须提供 MIME 类型。


问题 #3:没有表示矢量可绘制资源的 MIME 类型。

您无法告诉接收应用程序这是哪种格式,因为此格式不是为在应用程序之间传递而设计的。


如果您希望将ACTION_SENDEXTRA_STREAM一起使用:

  • 使用ContentProvider(如FileProvider(来提供您的内容,以便您获得要在EXTRA_STREAM中使用的content:Uri

  • 使该内容具有可识别的MIME类型,并在Intent中使用该MIME类型(例如,image/jpegimage/png

最新更新