2010-11-10 188 views
1

我創建的應用程序具有將用戶數據轉換爲CSV文件的「導出」功能,並允許用戶將其作爲附件發送給某人(可能是他們自己)。從應用程序發送帶附件的電子郵件

CSV文件已成功創建,但是當我嘗試發送電子郵件時,遇到問題。該設備看起來像它將發送電子郵件與適當的附件,但收到電子郵件時......根本沒有附件...

這裏是我用來發送電子郵件的代碼:

final Intent email = new Intent(android.content.Intent.ACTION_SEND); 

    email.setType("text/html"); 
    email.putExtra(android.content.Intent.EXTRA_SUBJECT, getString(R.string.email_subject)); 
    email.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(getString(R.string.email_1))); 

    email.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///" + getString(R.string.csv_title))); 


    startActivity(Intent.createChooser(email, "Send mail...")); 
+0

可能重複的[問題發送電子郵件帶有附件編程](http://stackoverflow.com/questions/1247983/problem-sending-an-email-with-an-attachment-programmatically) – 2010-11-10 22:49:39

+0

如何你是否創建了CSV文件? – rasen58 2013-04-05 00:20:29

回答

0

需要正確的路徑爲您的文件,如果再SD卡上......

sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse 
("file://"+Environment.getExternalStorageDirectory()+getString(R.string.csv_title)")); 

看看這裏的附加信息上設置相應的文件路徑

http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

+0

如果不在SD卡上怎麼辦?我認爲只是假設用戶有SD卡是不明智的......因爲如果他們不這樣做,那麼導出功能對他們來說基本上是無用的。 – dfetter88 2010-11-10 21:41:09

+0

爲你保存文件的任何地方設置適當的路徑......我所做的一點是「file://」不正確,你需要指定正確的路徑才能使代碼工作 – 2010-11-10 21:46:13

0

GMail應用程序接受文件:// Uris只有當他們在SD卡上...並在Android 1.6設備上我甚至有一個問題,它只接受file:// sdcard/* Uris而真正的此特定設備的外部存儲位於另一條路徑上。

無論如何,我有一個更好的行爲與附件,因爲我通過一個ContentProvider提供他們。的

+0

10您是否暗示由使用ContentProvider,我可以避免使用SD卡來存儲我的CSV文件? – dfetter88 2010-11-11 01:42:43

+0

是的,您的ContentProvider實現將從文件中提供一個OutputStream,該文件可以位於您的應用程序專用目錄中。 – 2010-11-11 13:57:52

2
i've done for send any file from SD card with mail attachment.. 

Intent sendEmail= new Intent(Intent.ACTION_SEND); 
     sendEmail.setType("rar/image"); 
     sendEmail.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new   
     File("/mnt/sdcard/download/abc.rar"))); 
     startActivity(Intent.createChooser(sendEmail, "Email:")); 
相關問題