2011-05-20 76 views
0

我已經制作了一個程序,其中我在data/data/mypackagename/目錄中創建一個文件。從那裏我試着將文件附加到電子郵件併發送。我可以從我的私人文件夾讀取內容嗎?

發生的問題是在將電子郵件作爲附件發送時出現的文件,但收到郵件時永遠不會收到附件。

我相信,當URI解析文件中的代碼中的一些問題正在發生:

emailintent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+outFileName)); 

我的問題是可以訪問私人文件夾的數據,我的手機,或者我應該始終把它裏面的SD卡。

如果我把我在SD卡內製作的文件,附件問題會消失嗎?

+0

outFileName文件的完整路徑? – jkhouw1 2011-05-20 11:46:18

+0

yes ... outFileName如下所示/data/data/com.company.NauticDates/attachment.ics – user743883 2011-05-20 12:02:17

回答

1

我的問題是可以訪問的根文件夾的數據,我的手機,或者我應該始終把它放在SD卡里面讀取文件。

您的應用程序可以訪問應用程序本地數據存儲中的數據 - getFilesDir()返回的目錄。

但是,您沒有編寫電子郵件程序。電子郵件程序是由其他人編寫的,並且您正在另一個應用程序中開始一項活動。該電子郵件程序無權讀取您的應用程序的數據存儲中的文件

您需要將外部存儲器上的文件保存爲其他人所建議的版本,或使用以MODE_WORLD_READABLE作爲參數的openFileOutput()版本,因此您有一個文件表明其他應用程序(如電子郵件程序) 可以閱讀。

outFileName如下/data/data/com.company.NauticDates/attachment.ics

我當然希望不會。那應該是/data/data/com.company.NauticDates/files/attachment.ics。請不要在你的應用程序中硬連線。請使用適當的方法獲取您要使用的目錄,例如getFilesDir()openFileOutput()將文件放入應用程序本地文件存儲中。

+0

硬連線路徑有什麼問題?你也可以給我一個關於使用getfilesdir和openfileoutput的想法嗎? – user743883 2011-05-21 05:22:33

+0

@ user743883:「硬連線路徑有什麼問題?」 - 假設所有設備上的路徑都是相同的,但它們不是。 「你也可以給我一個關於使用getfilesdir和openfileoutput的想法嗎?」 - 您應該在十秒內找到http://goo.gl/YnQic和http://goo.gl/TkDqi和http://goo.gl/xziPw來搜索開發者文檔。 – CommonsWare 2011-05-21 10:40:42

0

您可以將該文件放在資產文件夾中。您可以使用下面的代碼

InputStream myInput = context.getAssets().open("filename"); 

感謝 迪帕克

+0

海報不是試圖從自己的程序中讀取文件,而是通過Intent將它傳遞給不同的程序,所以不太可能直接工作。 – 2014-06-05 16:05:32

相關問題