2011-08-21 88 views
0

我正尝试使用send-me-logs向我发送包含日志的电子邮件。我不想使用电子邮件客户端,但只需“悄悄地”发送电子邮件。我也在我的应用程序中设置了android.permission.INTERNET。我使用此代码:使用ACTION_SENDTO发送电子邮件始终失败

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

尝试把主题和文本的emailUri内为PARAMS:

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

,并删除了2条intent.putExtra线

然后打开选择:

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

感谢您的提示,但它仍然不会工作... :-(我仍然得到相同的错误:失败的BINDER TRANSACTION。 –

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); 
} 

AND ...

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

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

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

相关问题