我正在通过以下代码发送带有日志结果的邮件:
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("text/plain");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, emailAddressList);
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Android Log");
emailIntent.putParcelableArrayListExtra(android.content.Intent.EXTRA_STREAM, uris);
try {
startActivity(Intent.createChooser(emailIntent,"Send..."));
finish();
}
catch (android.content.ActivityNotFoundException e) {
new AlertDialog.Builder(SendActivity.this)
.setIconAttribute(android.R.attr.alertDialogIcon)
.setTitle(R.string.cannotSend)
.setMessage(R.string.appNotFound)
.setPositiveButton(R.string.ok, null)
.show();
}
模拟器中的电子邮件应用程序(trget Jelly Bean)是这个:
发送时会显示此内容,其中包含目的地、主题和附件:
oubox 显示邮件有附件:
但是收到的消息没有附件:
我唯一的猜测是电子邮件应用程序失败了,但我不知道这是否是我的错,我是否可以纠正它,或者我是否可以在 AVD 中安装另一个邮件客户端来完成这项工作。
PS:顺便说一句,在 AVD 上发送这些邮件真的很慢,当我测试撰写和发送纯文本邮件时,它的发送速度要快得多。
编辑
我有一个想法,可能是因为附件来自临时文件而导致问题吗?它们链接到邮件而不是复制,当电子邮件应用程序发送它们时,它们不再存在?
attachment = File.createTempFile("logs", "txt");
out = new FileOutputStream(attachment);
out.write(logs.getBytes());
out.close();
uris.add(Uri.fromFile(attachment));
attachment = File.createTempFile("sysinfo", "txt");
out = new FileOutputStream(attachment);
out.write(getSystemInfo());
out.close();
uris.add(Uri.fromFile(attachment));