我正在尝试使用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)。有什么想法吗?
答案 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文件。
希望这可以帮助其他人。我注意到这是一个相当古老的帖子