我试图通过启动一个意图在Android上播放视频 . 我正在使用的代码是:
tostart = new Intent(Intent.ACTION_VIEW);
tostart.setDataAndType(Uri.parse(movieurl), "video/*");
startActivity(tostart);
这适用于大多数手机,但不适用于 HTC Hero . 它似乎加载了一些不同的视频播放器 . 这确实播放了第一个视频 . 但是,之后的每个视频都没有响应 . (它保持一定的循环) .
如果我添加一个明确的
tostart.setClassName("com.htc.album","com.htc.album.ViewVideo");
(在startactivity之前)它确实在 HTC Hero 上工作 . 但是,由于这是一个 HTC 特定的调用,我无法在其他手机上运行此代码(例如 G1 ) . 在 G1 上,这有效:
tostart.setClassName("com.android.camera","com.android.camera.MovieView"); //g1 version
但英雄没有想到这个意图 . 有人知道所有Android设备应该支持的意图/类名列表吗?或者特定的一个发布视频?谢谢!
5 回答
在Intent上使用setDataAndType
如果您不知道类型,请使用“video / mp4”作为MIME或使用“video / *” .
我和Hero一起使用了我认为已发布的API . 最后,我使用了一个测试来查看是否可以收到意图:
在使用时,我通常只是开始活动:
显而易见:如果你沿着这条路走 - 使用非公共API - 你必须绝对提供一个你知道肯定有用的后备 . 它不一定是完美的,它可以是Toast说这个手机/设备不支持,但你应该避免未被捕获的异常 . 结局很明显 .
我发现Open Intents Registry of Intents Protocols非常有用,但我没有找到相当于绝对必须支持的TCK类型的意图列表,以及哪些应用程序执行不同手机的示例 .
以下代码对我来说很好 .
从现在开始,在API 24之后,
Uri.parse(filePath)
将无效 . 你需要使用它但在使用之前,您需要了解文件提供程序的工作原理 . 转到official document link以更好地了解文件提供程序 .
从调试信息来看,似乎来自 MainActivity 的 VideoIntent 无法将视频路径发送到 VideoActivity . 它从
uriString
给出NullPointerException
错误 . 我认为VideoActivity
中的一些代码:无法从这里收到uri: