Java Android资源的文件句柄

Java Android资源的文件句柄,java,android,android-resources,Java,Android,Android Resources,请不要说这不是重复的。对于这个问题,我还没有找到一个有效的答案,它不包括首先将文件复制到外部存储 在stackoverflow的各种回答中,我找到了一种通过文件句柄访问Android原始资源的方法: Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.wikipedia); File file = new File(uri.getPath()); Log.v("MyActivity", "File

请不要说这不是重复的。对于这个问题,我还没有找到一个有效的答案,它不包括首先将文件复制到外部存储


在stackoverflow的各种回答中,我找到了一种通过文件句柄访问Android原始资源的方法:

Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.wikipedia);
File file = new File(uri.getPath());
Log.v("MyActivity", "File exists: " + file.exists());
我也尝试过:

Uri uri = Uri.parse("android.resource://" + getPackageName() + "/raw/wikipedia.png");
File file = new File(uri.getPath());
Log.v("MyActivity", "File exists: " + file.exists());
尝试对包名进行硬编码和/或同时使用uri.toString()

但我从未获得文件句柄,日志总是说明:

V/MyActivity﹕ File exists: false
关于stackoverflow的其他答案建议在访问文件之前将文件复制到外部存储,这就是我现在正在做的。我为什么要在系统中存储两次37MB的文件

必须有办法在APK中打包一个大文件并访问它。不幸的是,我使用的库需要一个文件句柄,所以没有办法解决这个问题


在上面的例子中,我做错了什么?这是一个空白的应用程序,我只是将任意文件复制到原始文件夹。

这篇文章可能对您有意义


谢谢你的评论。基本上,他只是将文件复制到外部存储器,然后访问它。这就是我现在正在做的。但是我不想为了访问一个37MB的文件而在系统中存储两次。一定有别的办法吗?