Pan*_*Man 53 video sdk android android-intent
我试图通过启动一个意图在Android上播放视频.我正在使用的代码是:
tostart = new Intent(Intent.ACTION_VIEW);
tostart.setDataAndType(Uri.parse(movieurl), "video/*");
startActivity(tostart);
Run Code Online (Sandbox Code Playgroud)
这适用于大多数手机,但不适用于HTC Hero.它似乎加载了一些不同的视频播放器.这确实播放了第一个视频.但是,之后的每个视频都没有响应.(它保持一定的循环).
如果我添加一个明确的
tostart.setClassName("com.htc.album","com.htc.album.ViewVideo");
Run Code Online (Sandbox Code Playgroud)
(在开始活动之前)它确实适用于HTC Hero.但是,由于这是HTC特定的呼叫,我无法在其他手机(例如G1)上运行此代码.在G1上,这有效:
tostart.setClassName("com.android.camera","com.android.camera.MovieView"); //g1 version
Run Code Online (Sandbox Code Playgroud)
但英雄没有想到这个意图.有人知道所有Android设备应该支持的意图/类名列表吗?或者特定的一个发布视频?谢谢!
Chr*_*ian 80
在Intent上使用setDataAndType
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(newVideoPath));
intent.setDataAndType(Uri.parse(newVideoPath), "video/mp4");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
如果您不知道类型,请使用"video/mp4"作为MIME或使用"video/*".
Kis*_*nki 14
从现在开始API 24之后,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);
Run Code Online (Sandbox Code Playgroud)
但在使用之前,您需要了解文件提供程序的工作原理.转到官方文档链接以更好地了解文件提供程序.
jam*_*esh 12
我和Hero一起使用了我认为已发布的API.最后,我使用了一个测试来查看是否可以收到意图:
private boolean isCallable(Intent intent) {
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
Run Code Online (Sandbox Code Playgroud)
在使用时,我通常只是开始活动:
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.
}
Run Code Online (Sandbox Code Playgroud)
显而易见:如果你沿着这条路走 - 使用非公共API - 你必须绝对提供一个你知道肯定有用的后备.它不一定是完美的,它可以是Toast说这个手机/设备不支持,但你应该避免未被捕获的异常.结局很明显.
我发现Intent Protocols的Open Intents Registry非常有用,但是我没有找到相当于必须支持的TCK类型的意图列表,以及哪些应用程序执行不同手机的示例.
小智 12
以下代码对我来说很好.
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(movieurl));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
108843 次 |
最近记录: |