通过URI打开Android资源文件会引发FileNotFoundException

时间:2014-03-03 22:22:21

标签: java android

我正在尝试获取res/raw/目录中资源的URI。目标是将此URI提供给VideoView,但这有问题,而且我似乎无法使用测试代码打开该文件。

我有以下测试代码:

String uri = "android.resource://com.my.package/" + R.raw.sample_video;

File inputFile = new File(uri);
try {
    InputStream is = new FileInputStream(inputFile);
    byte[] bytes = new byte[50];
    is.read(bytes);
    Log.d("test", new String(bytes));
} catch(IOException e) {

}

new FileInputStream行抛出一个FileNotFoundException,无论我在URI上尝试了什么变化,但我看到的每一个证据似乎都认为这是正确的形式。

由于与项目体系结构相关的原因,直接返回Resource的{​​{1}}方法不是一个选项,因此URI是我能看到的唯一选项。

出了什么问题?我错误地指出了如何为这个文件指定URI?此测试代码是否无法代表VideoView是否能够读取文件?如果不是,那是什么?此测试代码是否适合您(这表明我的项目配置必定存在问题)?

1 个答案:

答案 0 :(得分:0)

要在原始文件夹中获取sample_video的URI:

  Uri videoUri = Uri.parse("android.resource://" + getPackageName() + "/" 
+ R.raw.sample_video); //do not add any extension

播放视频:

videocontainer.setVideoURI(Uri.parse(videoUri));
videocontainer.start();

videocontainer类型的videoview