Android:已弃用的Context.MODE_WORLD_READABLE的替代方案?

时间:2012-12-13 09:27:52

标签: android video video-processing

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卡位置的人。视频将来自应用程序,因此问题是,如果现在不允许,我该如何编写文件并进行查看。

3 个答案:

答案 0 :(得分:11)

  

uri将成为我将写入SD卡位置的人。

默认情况下已经是MODE_WORLD_WRITABLE。另请注意,您列出的代码(openFileOutput()写入外部存储(您错误地称之为“sdcard”)。 openFileOutput()用于内部存储。

  

视频将来自应用程序,所以问题是,如果现在不允许,我该如何编写文件并查看它。

如果您确实要将文件写入外部存储空间,只需使用指向该文件的Uri即可。

如果您要将文件写入内部存储空间,请创建ContentProvider以提供该文件,并使用Uri指向该ContentProviderContentProvider 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。没有   保证此访问模式将保留在文件中,例如何时   它经历了备份和恢复。文件创建模式:允许所有   其他应用程序具有对创建文件的读访问权。