使用位于raw或assets文件夹中的文件

时间:2012-03-19 20:21:17

标签: android

目前我可以从互联网上下载文件并存储在SD卡上,然后从那里使用该文件。然而,这使得可以看到文件(具有专有数据)。我更喜欢使用来自raw或assets文件夹之类的文件。 我将跳过下载代码,但我使用该文件的代码是

  File myFile = new File (android.os.Environment.getExternalStorageDirectory() + "/folder/filename.xml");
  Intent myIntent = new Intent(Intent.ACTION_VIEW);
  myIntent.setData(Uri.fromFile(myFile));

Android使用默认应用程序打开文件,一切都很好。

我发现类似的问答是围绕使用像

这样的代码
  Uri.parse("android.resource://com.projectname.testing/raw/filename");

  InputStream ins  = getResources().openRawResource(R.raw.filename);

但我无法弄清楚如何将这两者中的任何一个恢复为'文件'格式,以便与我的.setData代码一起使用

我想通过简单地将文件作为文件访问来解决我的问题。但是,由于我已经阅读了外部应用程序,我可能需要使用mode_world_readable创建该文件的临时副本,然后在应用程序关闭后删除它。这听起来像是一项额外的工作,特别是因为我上面的代码适用于存储在SD卡上的文件。

有没有人有任何想法? 感谢

1 个答案:

答案 0 :(得分:0)

  

我更喜欢使用来自raw或assets文件夹的文件。

请注意,这些也可以“看到”。

  

但我无法弄清楚如何将这两者中的任何一个恢复为'文件'格式,以便与我的.setData代码一起使用

setData()不接受File。它需要Uri。使用Uri.parse()解析其他类型的Uri值 - 您已经拥有上面显示的代码。

  

但是,由于外部应用程序正在使用它,我已经阅读过,我可能需要使用mode_world_readable创建该文件的临时副本,然后在应用程序关闭后将其删除。

它绝对需要具有世界可读性。此外,并非所有应用都支持所有方案,因此支持file://http://的应用可能不支持android.resource://

相关问题