2011-05-20 46 views
6

如果我在應用程序的緩存目錄中創建一個臨時文件,例如,我不能將它作爲附件發送給您。這是因爲其他應用程序沒有讀取文件的權限。在沒有SD卡的應用程序之間共享臨時文件

在API 9及更高版本中,我可以使用setReadable(true,false)將文件設置爲世界可讀。不幸的是,我的目標是API級別7+。我不想依賴SD卡的存在,所以我不能使用getExternalStorageDir()返回的位置來存儲它,以防沒有卡存在。

即使沒有SD卡存在,我如何生成並共享臨時文件?

回答

8
final String FILENAME = "file.tmp"; 
final String someData = "File data"; 

FileOutputStream fos = openFileOutput(FILENAME, 
             Context.MODE_WORLD_WRITEABLE | 
             Context.MODE_WORLD_READABLE); 
fos.write(someData.getBytes()); 
fos.close(); 

http://developer.android.com/reference/android/content/Context.html#openFileOutput(java.lang.String,%20int)

+0

正如一個音符,這個文件被存儲在目錄)由getFilesDir(返回的一個,*不* getCacheDir()。 工程就像一個魅力。謝謝! – 2011-05-20 04:41:50

+2

似乎從SDK 17(http://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLE) 已棄用Context.MODE_WORLD_WRITEABLE現在推薦的解決方案是什麼? – alextk 2012-11-27 14:04:50

+1

@alex可能是Intent.FLAG_GRANT_READ_URI_PERMISSION,同時創建意圖。 – soulseekah 2013-03-31 10:47:58

相關問題