我一直在研究Android程序,使用Intent发送包含附件(图像文件,音频文件等)的电子邮件ACTION_SEND.电子邮件只有一个附件时,该程序正在运行.我曾经Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)将指定的图像文件附加到邮件中,并且工作正常,邮件可以通过Gmail传送.但是,当我尝试通过Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)多次调用将多个图像附加到同一邮件时,它无法正常工作.电子邮件中没有显示任何附件.
我搜索了SDK文档和Android编程用户组关于电子邮件附件但找不到任何相关信息.但是,我发现有另一个意图常量ACTION_SEND_MULTIPLE(自API级别4起可用)可能符合我的要求.基于SDK文档,它只是声明它向其他人提供多个数据,它的工作方式类似ACTION_SEND,除了数据是多个.但我还是无法弄清楚这个命令的正确用法.我试图声明意图ACTION_SEND_MULTIPLE,然后putExtra(EXTRA_STREAM, uri)多次调用以附加多个图像,但我得到了与之前相同的错误结果,没有任何附件显示在电子邮件中.
有没有人试过ACTION_SEND_MULTIPLE并使用多个电子邮件附件?
注意:我不想将图像附加到电子邮件中
我想在电子邮件正文中显示图片,
我已经尝试了HTML图像标记<img src=\"http://url/to/the/image.jpg\">",我得到了输出,你可以在我的问题中看到如何在电子邮件正文中添加图像,所以我累了Html.ImageGetter.
它对我不起作用,它也给了我相同的输出,所以我怀疑是否可以这样做,
我的代码
Intent i = new Intent(Intent.ACTION_SEND);
i.putExtra(Intent.EXTRA_EMAIL,new String[] {"abc@gmail.com"});
i.putExtra(Intent.EXTRA_TEXT,
Html.fromHtml("Hi <img src='http://url/to/the/image.jpg'>",
imgGetter,
null));
i.setType("image/png");
startActivity(Intent.createChooser(i,"Email:"));
private ImageGetter imgGetter = new ImageGetter() {
public Drawable getDrawable(String source) {
Drawable drawable = null;
try {
drawable = getResources().getDrawable(R.drawable.icon);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
} catch (Exception e) {
e.printStackTrace();
Log.d("Exception thrown",e.getMessage());
}
return drawable;
}
};
Run Code Online (Sandbox Code Playgroud)
更新1:如果我使用ImageGetter代码TextView我能够获取文本和图像,但我无法在电子邮件正文中看到图像
这是我的代码:
TextView t = null;
t = (TextView)findViewById(R.id.textviewdemo); …Run Code Online (Sandbox Code Playgroud) 我有一个html显示图像为base64:
<html><body>hello<br/><img style='display:block; width:100px;height:50px;' id='base64image' src='data:image/png;base64,<!-base 64 string-->' /></body></html>Run Code Online (Sandbox Code Playgroud)
结果是这样的:

但是当我在电子邮件中使用这个时:
Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{to});
email.putExtra(Intent.EXTRA_SUBJECT, subject);
email.setType("text/html");
String body = new String("<html><body>hello<br/><img style='display:block; width:100px;height:50px;' id='base64image' src='data:image/png;base64,<!-base 64 string-->' /></body></html>");
email.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(body));
startActivity(Intent.createChooser(email,"Choose an Email client :"));
Run Code Online (Sandbox Code Playgroud)
结果如下:

图像不显示在邮件中.有什么我在这里失踪的.是否有任何限制传递base64数据或其他问题在这里?