From here我知道一种编写文件的方法,可以访问其他应用程序和其他意图,但现在不推荐使用Context.MODE_WORLD_READABLE,我怎样才能安全地完成此操作?
FileOutputStream out = myActivity.openFileOutput(fileTo, Context.MODE_WORLD_READABLE);
好的更多信息:
我正在使用它:
intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "video/*");
uri将成为我将写入SD卡位置的人。视频将来自应用程序,因此问题是,如果现在不允许,我该如何编写文件并进行查看。
答案 0 :(得分:11)
uri将成为我将写入SD卡位置的人。
默认情况下已经是MODE_WORLD_WRITABLE
。另请注意,您列出的代码(openFileOutput()
)不写入外部存储(您错误地称之为“sdcard”)。 openFileOutput()
用于内部存储。
视频将来自应用程序,所以问题是,如果现在不允许,我该如何编写文件并查看它。
如果您确实要将文件写入外部存储空间,只需使用指向该文件的Uri
即可。
如果您要将文件写入内部存储空间,请创建ContentProvider
以提供该文件,并使用Uri
指向该ContentProvider
。 ContentProvider
assets/
openFile()
在首次运行时从{{1}}提取PDF文件,然后通过{{1}}提供该文件,以便PDF查看器查看。
答案 1 :(得分:8)
使用以下方法将视频保存在内存中
openFileOutput("test.mp4", "MODE_PRIVATE");
然后这样做:
String path = context.getFilesDir().getAbsolutePath() + "/test.mp4"; // path to the root of internal memory.
File f = new File(path);
f.setReadable(true, false);
Intent playIntent ....
playIntent.setType("video/*");
playIntent.setData(Uri.fromFile(f));
祝你好运。
答案 2 :(得分:3)
看起来文档似乎很清楚。
此常量在API级别17中已弃用。
创建世界可读文件非常危险,可能会导致 应用程序中的安全漏洞强烈劝阻;代替, 应用程序应该使用更正式的交互机制,例如 ContentProvider,BroadcastReceiver和Service。没有 保证此访问模式将保留在文件中,例如何时 它经历了备份和恢复。文件创建模式:允许所有 其他应用程序具有对创建文件的读访问权。