我正试着在Android上播放视频,通过发起一个意图。我使用的代码是:
tostart = new Intent(Intent.ACTION_VIEW);
tostart.setDataAndType(Uri.parse(movieurl), "video/*");
startActivity(tostart);
这在大多数手机上都能用,但在宏达电英雄上就不行了。它似乎加载了一点不同的视频播放器。这确实会播放抛给它的第一个视频。然而,之后的每个视频都没有响应。(它保持在某个循环中)。
如果我添加一个显式
tostart.setClassName("com.htc.album","com.htc.album.ViewVideo");
(在开始活动之前)它确实可以在的HTC英雄上工作。但是,由于这是一个特定于HTC的呼叫,我不能在其他手机(如G1)上运行此代码。在G1上,这是可行的:
tostart.setClassName("com.android.camera","com.android.camera.MovieView"); //g1 version
但这一意图在主人公身上却缺失了。有没有人知道所有Android设备都应该支持的意图/类名列表?或者是发布视频的特定视频?谢谢!
发布于 2013-01-07 18:41:18
在Intent上使用setDataAndType
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(newVideoPath));
intent.setDataAndType(Uri.parse(newVideoPath), "video/mp4");
startActivity(intent);
使用"video/mp4“作为MIME或使用"video/*”,如果您不知道类型。
编辑:这对一般用途无效。它修复了旧HTC设备中的一个错误,该设备需要在意图构造函数中使用URI,并在之后进行设置。
发布于 2018-01-18 21:34:51
从现在开始,在API24之后,Uri.parse(filePath)
将不起作用。你需要使用这个
final File videoFile = new File("path to your video file");
Uri fileUri = FileProvider.getUriForFile(mContext, "{yourpackagename}.fileprovider", videoFile);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(fileUri, "video/*");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//DO NOT FORGET THIS EVER
startActivity(intent);
但在使用它之前,您需要了解文件提供程序是如何工作的。要更好地了解文件提供程序,请访问official document link。
发布于 2009-10-24 00:22:56
我在Hero中遇到过这一点,使用的是我认为是已发布的API。最后,我使用了一个测试来查看是否可以接收意图:
private boolean isCallable(Intent intent) {
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
在我通常刚开始活动时使用:
final Intent intent = new Intent("com.android.camera.action.CROP");
intent.setClassName("com.android.camera", "com.android.camera.CropImage");
if (isCallable(intent)) {
// call the intent as you intended.
} else {
// make alternative arrangements.
}
显而易见:如果你沿着这条路走--使用非公共APIs -你绝对必须提供一个后备,你知道它肯定是有效的。它不一定是完美的,它可以是一个Toast,说明这个手机/设备不支持它,但你应该避免一个未捕获的异常。结束很明显。
我发现Open Intents Registry of Intents Protocols非常有用,但我还没有找到一个TCK类型的意图列表,这是绝对必须支持的,以及哪些应用程序可以做不同手机的例子。
https://stackoverflow.com/questions/1572107
复制相似问题