我的视频遇到奇怪的错误Intents
这是我直到 Android 4.1 才体验到的。
这是我启动的代码Intent
。我也尝试过其他 MIME 类型,包括视频/mp4,但根据官方 Android 开发者网站的说法,通配符 (*video/**) 应该可以正常工作意图和意图过滤器 http://developer.android.com/guide/components/intents-filters.html.
Intent videoIntent = new Intent();
videoIntent.setAction(Intent.ACTION_VIEW);
videoIntent.setData(Uri.parse(fileUrl));
videoIntent.setType("video/*");
startActivity(videoIntent);
在我的设备上,两者都运行 Android 4.1,这会导致ActivityNotFoundException
,因为它说没有安装的应用程序可以处理Intent
。这很奇怪,因为它一直在所有以前版本的 Android 上运行,并且应该在默认视频播放器中启动。
许多第三方视频播放器都能够处理Intent
,所以我想知道为什么它不再适用于默认视频播放器。
有任何想法吗?
这似乎是同一个问题:
视频播放器无法在 Jelly Bean 设备上运行:android.content.ActivityNotFoundException https://stackoverflow.com/questions/12931019/video-player-not-working-on-jelly-bean-device-android-content-activitynotfounde?rq=1
在其他人的帮助下,我设法找到了解决方案。看来setType()
调用会清除任何先前附加的数据,包括setData()
称呼。根据文档:
此方法会自动清除之前设置的所有数据(例如
例如 setData(Uri))。
当我把它改成setDataAndType()
相反,它起作用了。谢天谢地,看来这毕竟不是 Jelly Bean 的问题:-)
这是创建视频意图的最终代码:
public static Intent getVideoIntent(String fileUrl) {
Intent videoIntent = new Intent(Intent.ACTION_VIEW);
videoIntent.setDataAndType(Uri.fromFile(new File(fileUrl)), getMimeType(fileUrl));
return videoIntent;
}
public static String getMimeType(String url) {
String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
if (extension != null) {
MimeTypeMap mime = MimeTypeMap.getSingleton();
type = mime.getMimeTypeFromExtension(extension);
if (TextUtils.isEmpty(type))
type = "video/*"; // No MIME type found, so use the video wildcard
}
return type;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)