2014-03-03 49 views
0

我想獲取一個URI到我的res/raw/目錄中的資源。目標是將此URI提供給VideoView,但這有問題,我似乎無法用測試代碼打開該文件。通過URI打開Android資源文件引發FileNotFoundException

我有以下的測試代碼:

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什麼變化,但每一件證據我看似乎都同意,這是正確的形式。

由於與項目體系結構有關的原因,直接返回InputStreamResource方法在這裏不是一個選項,所以URI是我能看到的唯一選項。

什麼問題?我誤解了如何指定這個文件的URI?該測試代碼是否代表VideoView是否能夠讀取文件?如果不是,那是什麼?這個測試代碼是否適合你(這將表明我的項目配置必須有錯誤)?

+0

什麼是你ressouce的類型!視頻 ! –

+0

'文件(字符串)'需要一個路徑,而不是一個URI。 – 323go

回答

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(); 

其中videoviewvideocontainer