2013-01-16 133 views
0

我要打開我的應用程序的電子郵件(G-郵件),它必須連接到某些PDF文件電子郵件附件中的PDF

的PDF位於由應用程序創建的文件夾中。 該文件夾不是在SD卡上創建的。

我的平板電腦沒有SD卡。 我的平板電腦沒有SD卡。 我的平板電腦沒有SD卡。

如何發送這些PDF格式的電子郵件?

if(android.os.Environment.getDataDirectory().equals(android.os.Environment.MEDIA_MOUNTED)) 
cacheDir=new File(android.os.Environment.getDataDirectory(),"MyAPP"); 



//String FILENAME = "testejan1.pdf"; 
//String string = "hello world!"; 



//File file = new File (Environment.getDataDirectory().getPath(), "/MyAPP/"+"testejan1.pdf"); 
//Uri path = Uri.fromFile(file); 

Intent shareIntent = new Intent(Intent.ACTION_SEND); 
shareIntent.setType("application/pdf"); 
//shareIntent.setAction(Intent.ACTION_SEND); 
shareIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "[email protected]" }); 
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Material de apoio do mês de " + mesclicado); 
shareIntent.putExtra(Intent.EXTRA_TEXT, "Você esta recebendo um super material de visitação médica"); 
//shareIntent.setDataAndType(path, "application/pdf"); 
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///MyAPP/"+"testejan1.pdf")); 
//shareIntent.setType("file/*"); 
startActivity(shareIntent); 

回答

0

大部分代碼看起來正確。兩件事:

當您在應用程序的本地文件系統中創建PDF文件時,您需要使用MODE_WORLD_READABLE標誌創建它。這是其他應用程序能夠打開PDF所需的。

然後使用Uri.fromFile獲取一個Android URI到你的文件(你在註釋代碼中有這個)。

請注意,MODE_WORLD_WRITEABLE被認爲是一種糟糕的安全做法,因爲設備上的任何應用都能夠訪問您的PDF文件。更好的解決方案是創建ContentProvider並使用content: URI將PDF數據提供給外部應用程序。這使您可以控制是否允許或拒絕訪問PDF文件的任何單個加載(但它有點多)。

+0

還有一件事:當您使用Action.SHARE和PDF文件時,您會遇到[Adobe Reader安裝時應用程序崩潰](http://stackoverflow.com/q/10319928/49489)。在我正在開發的應用程序中,我們最終構建了自己的自定義活動選擇器來解決此問題。 – Barend

+0

非常感謝您的詳細解釋。 完美。 舉例說明下載pdf(MODE_WORLD_WRITEABLE)。 以及一些使用ContentProvider與pds外部應用程序的示例。 –

0
i.setType("application/pdf"); 
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("pdf path")); 
+1

失敗 - 無法附加您的文件。 –