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

Android 在没有SD卡的应用程序之间共享临时文件,android,file,file-io,permissions,Android,File,File Io,Permissions,例如,如果我在应用程序的缓存目录中创建临时文件,我就不能将其作为附件发送电子邮件。这是因为其他应用程序没有读取该文件的权限 在API 9及以上版本中,我可以使用setReadable(true、false)将文件设置为世界可读。不幸的是,我的目标是API级别7+。我不想依赖SD卡的存在,因此在没有SD卡的情况下,我不能使用getExternalStorageDir()返回的位置来存储SD卡 即使没有SD卡,如何生成和共享临时文件才能正常工作 final String FILENAME = "fi

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

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

即使没有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();

请注意,此文件存储的目录是getFilesDir()返回的目录,而不是getCacheDir()。工作起来很有魅力。谢谢从SDK 17()开始,Context.MODE\u WORLD\u WRITEABLE似乎已被弃用。现在推荐的解决方案是什么?@alex-maybile-Intent.FLAG\u在创建Intent时授予\u READ\u URI\u权限。