在没有SD卡的应用程序之间共享临时文件

问题描述:

如果我在应用程序的缓存目录中创建一个临时文件,例如,我不能将它作为附件发送给您。这是因为其他应用程序没有读取文件的权限。在没有SD卡的应用程序之间共享临时文件

在API 9及更高版本中,我可以使用setReadable(true,false)将文件设置为世界可读。不幸的是,我的目标是API级别7+。我不想依赖SD卡的存在,所以我不能使用getExternalStorageDir()返回的位置来存储它,以防没有卡存在。

即使没有SD卡存在,我如何生成并共享临时文件?

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