2011-08-21 86 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文件。

希望這可以幫助其他人。我注意到這是一個相當舊的帖子

相關問題