2012-03-19 103 views
0

目前,我可以从互联网下载文件并存储在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将打开一个默认的应用程序文件,一切都很好。

我也发现了类似Q/A的是围绕使用像

Uri.parse("android.resource://com.projectname.testing/raw/filename"); 

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

代码,但我不能工作了如何让无论是那两个背成“文件'格式与我的.setData代码一起使用

我想通过简单地将文件作为文件访问来解决我的问题。但是,由于它正在被外部应用程序使用,我已阅读过,我可能需要使用mode_world_readable制作临时文件副本,然后在应用程序关闭后将其删除。这听起来像很多额外的工作,尤其是因为我上面的代码确实对存储在SD卡上的文件有效。

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

回答

0

我更喜欢从原始或资产文件夹的地方使用该文件。

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

,但我不能工作,如何既拿到这两个重新打入“文件”格式来与我.setData代码

setData()使用不采取File。它需要一个Uri。使用Uri.parse()来解析其他类型的Uri值 - 您已经有了上面显示的代码。

然而,因为它正在使用我看过,我可能需要与MODE_WORLD_READABLE文件的临时副本,然后在应用程序关闭后删除它的外部应用程序。

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

+0

感谢您的回复。你能详细说明原始文件夹或资产文件夹中的文件可以被看到吗?我认为他们被编码并包装到.apk文件中,这需要“黑客入侵”(因此,如果有人拥有我的私人数据,它将证明是“非法活动”) - 此外,我尝试了各种不同的方式Uri.parse选项,但似乎没有任何工作。它只在我传递文件时起作用。 – lifeIsGood 2012-03-20 16:09:30

+0

@lifeIsGood:“您能否详细说明如何查看原始文件夹或资产文件夹中的文件?” - 这些对其他应用程序来说是世界可读的。 – CommonsWare 2012-03-20 21:47:45