使用ACTION_SENDTO发送电子邮件会导致失败

时间:2011-08-21 14:39:26

标签: android

我正在尝试使用send-me-logs向自己发送包含日志的电子邮件。我不想使用电子邮件客户端,只是“静静地”发送电子邮件。我还在我的应用程序中设置了android.permission.INTERNET。我正在使用此代码:

Uri emailUri = Uri.parse("mailto:" + email);
StringBuilder sb = new StringBuilder(preface).append(LINE_SEPARATOR);
String phoneInfo = collectPhoneInfo();
sb.append(LINE_SEPARATOR).append(phoneInfo);
for (String line : lines)
    sb.append(LINE_SEPARATOR).append(line);
String content = sb.toString();
Intent intent = new Intent(Intent.ACTION_SENDTO, emailUri);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, content);
mContext.startActivity(intent);

startActivity不会抛出异常,但我的LogCat说:

08-21 16:30:22.418: ERROR/JavaBinder(9269): !!! FAILED BINDER TRANSACTION !!!

我使用的是真正的设备(三星Galaxy S2)。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试将主题和文字放在emailUri中作为参数:

Uri emailUri = Uri.parse("mailto:" + email + "?subject" = subject + "&body=" + content);

删除2个intent.putExtra行

然后打开选择器:

intent.setData(uri);
startActivity(Intent.createChooser(intent, "Email logs"));

答案 1 :(得分:0)

问题在于

  

intent.putExtra(Intent.EXTRA_TEXT,content);

内容太大而无法成功绑定到捆绑包中。 (捆绑有一个大小限制我听说人们说500kb或1024kb,但不是很确定)

如果您确实想发送所有可能包含大量信息的日志信息。我会写出文件,并将文件作为.txt附件附加到电子邮件

可帮助实现此目标的示例代码......

public static final String filename = "log.txt";

// Opening a file for output
logFile = new File(Environment.getExternalStorageDirectory(), filename);
FileWriter fileWriter = new FileWriter(logFile, true);

//open for appending   
bufferedWriter = new BufferedWriter(fileWriter);

for (String line : logInfoToWrite) {
    bufferedWriter.write(line);
}

和...

// adding a file as an attachment    
File logFile = new File(Environment.getExternalStorageDirectory(), filename);
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(logFile));

注意:示例代码不完整并且遗漏了一些异常处理,并且编写器刷新,但是应该给出足够的要点如何完成将日志条目写入文件,然后将该文件附加到电子邮件意图作为txt文件。

希望这可以帮助其他人。我注意到这是一个相当古老的帖子