2010-09-23 65 views
3

我想從Android發送一個pdf作爲附件。這裏是代碼:如何在從Android發送附件時添加.pdf擴展名?

String[] mailto = {"[email protected]"}; 
Uri uri = Uri.parse("android.resource://com.mywebsite.sendemail/raw/mypdf"); 

Intent emailIntent = new Intent(Intent.ACTION_SEND); 
emailIntent.putExtra(Intent.EXTRA_EMAIL, mailto); 
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "My Subject"); 
emailIntent.putExtra(Intent.EXTRA_TEXT, "My Body"); 
emailIntent.setType("application/pdf"); 
emailIntent.putExtra(Intent.EXTRA_STREAM, uri); 

startActivity(Intent.createChooser(emailIntent, "Send email using:")); 

現在這個工程,但問題是,該附件被稱爲mypdf而不是mypdf.pdf。我無法弄清楚如何用它的擴展名發送它......這是我需要幫助的。謝謝。

回答

2

由於您是從資源中提取PDF,所以我不相信您想要什麼。如果您將PDF複製到本地文件(使用正確的擴展名)併發送該文件,則應在結果消息中獲得擴展名。但直接從資源中...我懷疑沒有辦法添加擴展。

+1

感謝馬克。我已經能夠通過將文件複製到SDCard然後使用Uri.fromFile來解決問題。我不喜歡這種解決方案,因爲如果SD卡丟失或忙碌,它將無法工作。我把pdf的一個副本放在/ assets目錄中,但一直沒能使它與Uri.fromFile或Uri.parse協同工作。不知道爲什麼... – nickfox 2010-09-24 15:30:09

+0

嗯......'file:/// android_asset/mypdf.pdf'可能會工作。我只在自己的應用程序中使用過這種語法,但不是傳遞給另一個應用程序。 – CommonsWare 2010-09-24 16:27:01

+0

我嘗試了18種不同的fromFile和parse排列,包括使用android_asset,正如你所建議的。我非常確信自己必須從SD卡上讀取它......這是不幸的。這是在Android中真的可以改進的東西...這是我最終使用從卡中讀取的uri:Uri uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),「mypdf.pdf」)) ; – nickfox 2010-09-24 17:39:12

1

當我嘗試使用.putExtra方法時,它總是使用「強制關閉」消息來崩潰我的應用程序。如果我使用類似的東西: String mtUri =「mailto:[email protected]?subject = Some Subject & body = Some text &」;意圖intent =新意圖(Intent.ACTION_SENDTO,Uri.parse(mtUri)); startActivity(intent);

它似乎工作正常。我仍然有附加文件的問題,並可以使用一些幫助來形象化「attachment = file:/// ...」語法。

謝謝,

相關問題