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

Cap*_*mmo 6 permissions file-io android file

如果我在应用程序的缓存目录中创建一个临时文件,我就不能将其作为附件发送.这是因为其他应用程序没有读取文件的权限.

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

即使没有SD卡,如何以可行的方式生成和共享临时文件?

Sam*_*Sam 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();
Run Code Online (Sandbox Code Playgroud)

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

  • 从SDK 17开始,似乎不推荐使用Context.MODE_WORLD_WRITEABLE(http://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLE)现在推荐的解决方案是什么? (2认同)