2011-10-10 100 views
4

我想保存一個文件,然後激發其他應用程序的意圖來打開該文件。我該如何做到這一點?Android - 如何保存其他應用程序可讀的文件?

如果嘗試過:openFileOutput("file.pdf", Context.MODE_WORLD_READABLE)但似乎不起作用。我應該將文件保存在應用程序文件夾之外嗎?如果是的話,我如何通過它正確的權限?

回答

4

您可以使用這樣的事情:

String extPath = Environment.getExternalStorageDirectory().getAbsolutePath(); 
String pathPrefix = extPath + "/Android/data/" + APP_PACKAGE_ID + "/cache/"; 

將文件保存到SD卡,這是所有其他應用程序訪問。模式Context.MODE_WORLD_READABLE就足夠了。該代碼適用於android 2.1,並使用建議的路徑在SD卡上存儲應用程序相關數據。從Android 2.2開始,如果應用程序被卸載,該目錄會自動刪除。

您的應用程序需要安裝到SD卡上的權利:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

使用openFileOutput(...)與世界可讀權限是有點用處,因爲這文件存儲到只由應用程序本身訪問的文件夾。

有關更多信息,請參見data storage documentation

請注意,如果用戶通過USB連接設備進行文件存儲訪問,則外部存儲器可能不可用。您應該始終通過String state = Environment.getExternalStorageState();檢查此條件。

+1

感謝您的快速回答,但是當我不使用'openFileOutput'時,如何將文件標記爲'Context.MODE_WORL_READABLE'?因爲所有的Stream類都不接受這個參數,所以android文檔讓我有點無知。我必須在這裏丟失一些東西...... – Jeroen

+3

對不起,我的錯:沒有SD卡的訪問權限,您存儲在那裏的數據總是世界可寫的。 – HefferWolf

+0

什麼時候沒有SD卡的權限呢? – Jeroen

相關問題