java - 无法将矢量图像从drawable附加到Android Studio上的电子邮件
问题描述
你好。我在将可绘制的矢量图像附加到电子邮件时遇到问题。执行说不能附加空文件。
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
方案。
内容:URI 保存与 Intent 关联的数据流,与 ACTION_SEND 一起使用以提供正在发送的数据。
您正在使用一个android.resource:
不是content:
. 因此,一些试图响应您的应用程序Intent
将不知道如何处理您的Uri
.
问题 #2:您没有提供具体的 MIME 类型。
你有:
intent.setType("image/*");
那是无效的。它是您的内容,因此您必须提供 MIME 类型。
问题 #3:没有代表矢量可绘制资源的 MIME 类型。
您无法告诉接收应用程序这是什么格式,因为这种格式不是为在应用程序之间传递而设计的。
如果您想ACTION_SEND
使用EXTRA_STREAM
:
使用 a
ContentProvider
,例如FileProvider
,为您的内容提供服务,因此您可以content:
Uri
使用aEXTRA_STREAM
让该内容具有可识别的 MIME 类型,并在
Intent
(例如 ,image/jpeg
)image/png
中使用该 MIME 类型
推荐阅读
- android - 如何从 Android Studio 中的 APK buld 中排除默认资源?
- javascript - Facebook Messenger Chat - CustomerChat 插件不再是主要 Facebook SDK 的一部分
- mocha.js - 用 mocha-chai-sinon 测试去抖动
- django - DRF - 如何在查询集上实现基于对象的权限?
- html - 如何垂直居中浮动元素的高度百分比?
- php - 为什么表格的最后一列开始在表格外打印
- windows - 以不同的用户身份运行命令(从命令行)
- mysql - 本地主机连接但数据库未与 Wamp 连接
- angular - Ionic 4 - 平板电脑上的点击与触摸启动(点击/移动配置问题)
- loops - 将多次出现的 id 发送到 jmeter 中的请求