从安卓内部存储播放视频

3

我正在尝试通过意图播放存储在Android内部存储器中的视频文件。文件存在,但是当我尝试通过意图播放它们时,会出现错误“不支持的媒体文件”或“无法播放视频”,具体根据设备而定。我找不到哪里出错了。以下是我的代码:

File mydir = activity.getDir("Videos", Context.MODE_PRIVATE);
File fileWithinMyDir = new File(mydir, filename);
String videoResource = fileWithinMyDir.getPath();
Uri intentUri = Uri.parse(videoResource);

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(intentUri, "video/mp4");
startActivity(intent);

我不知道我做错了什么,也不知道该怎么办。非常感谢您的帮助。谢谢 :)

你正在尝试播放的视频,是否可以直接从资源管理器中播放到媒体播放器中?它是否能正常工作或者仍然出现相同的错误? - Nitesh
两个原因:1.缓冲内存异常,另一个是文件类型不受支持。请查看Logcat以找到解决方案。 - srinivas
同一个视频正在从外部存储播放。视频没有问题。唯一的问题是我如何从内部存储访问它。 - Tashen Jazbi
我认为我们无法从内部存储访问任何内容??? - Sarthak Mittal
@SarthakMittal 我已经可以从内部存储播放音频文件了 :) - Tashen Jazbi
2个回答

11

非常感谢朋友们的参与,非常感谢你们的努力。我已经找到了解决问题的方法。在播放文件之前需要将文件读取设置为真。

fileWithinMyDir.setReadable(true, false);
现在这里是从安卓内部存储播放mp4视频的完整意图代码。
File mydir = activity.getDir("Videos", Context.MODE_PRIVATE);
File fileWithinMyDir = new File(mydir, headingsList.get(mPosition));
fileWithinMyDir.setReadable(true, false);
String videoResource = fileWithinMyDir.getPath();
Uri intentUri = Uri.fromFile(new File(videoResource));

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(intentUri, "video/mp4");
startActivity(intent);

0

这段代码对我有效:

Uri fileUri = Uri.fromFile(new File(String file_path));
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(fileUri, URLConnection.guessContentTypeFromName(fileUri.toString()));
startActivity(intent);

那么很有可能是你没有正确地给出路径 :) - Sarthak Mittal
路径没问题,视频也在那里。我已经检查过并获取了文件大小,大小也正确。如果我从外部存储中保存并播放它,它可以工作,但是从内部存储中无法工作。 - Tashen Jazbi
我记得的是,Android不允许你以编程方式访问内部文件夹。 - Sarthak Mittal
哈哈哈,那太好了,我的知识不足以回答你的问题。 :) - Sarthak Mittal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接