android – 从app cache dir播放视频

任何人都可以解释为什么从我的应用程序缓存目录下载/播放视频不起作用,但从我的SD卡下载/播放相同的视频确实有效吗?

注意:正在下载此视频.我在调用VideoView.setVideoPath(…)之前保存到内存中.

// Works
File file = new File(Environment.getExternalStorageDirectory(), "vid-test.3gp");

// Does not work
File file = new File(getCacheDir(), "vid-test.3gp");

在每种情况下,相关文件都存在.

如果我尝试调用VideoView.setVideoURI(…)并将视频“流”到我的VideoView,它会被击中并错过它是否会起作用.

谁能解释这种行为?

最佳答案 这可能是一个许可问题.这是一个工作剪辑:

InputStream in = connection.getInputStream();

File file = new File(getApplicationContext().getCacheDir() ,fileName);

if(!file.exists()){
    file.setReadable(true);

    file.createNewFile();


    if (file.canWrite()){

        FileOutputStream out = new FileOutputStream(file);   

        byte[] buffer = new byte[1024];
        int len1 = 0;
        while ( (len1 = in.read(buffer)) > 0 ) {
            out.write(buffer,0, len1);
        }

        out.close();
    }

    in.close();

    Runtime.getRuntime().exec("chmod 755 "+getCacheDir() +"/"+ fileName);                       

}
点赞