从 Android WebView 中的链接播放 MP4 或 MP3
Posted
技术标签:
【中文标题】从 Android WebView 中的链接播放 MP4 或 MP3【英文标题】:Playing an MP4 or MP3 from a Link within an Android WebView 【发布时间】:2011-07-12 22:00:54 【问题描述】:我进行了广泛的搜索,似乎找不到确切的答案,甚至找不到答案。
我有一个可以打开网页的 WebView (JQuery Mobile),一切都很好。
在该页面中有指向 mp3 和 mp4 文件的静态链接。 这个想法是,当点击 - 设备将打开默认的声音或电影应用程序来播放每个。这在使用 android 浏览器时有效。
当我在 WebView 中打开并单击相同的链接时 - 没有任何反应。 没有任何东西打开或播放。
我将 getSettings 设置得尽可能开放。
**web.getSettings().setjavascriptEnabled(true);
web.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
web.getSettings().setPluginsEnabled(true);
web.getSettings().setSupportMultipleWindows(true);
web.getSettings().setSupportZoom(true);
web.getSettings().setBuiltInZoomControls(true);
web.getSettings().setAllowFileAccess(true);
web.setVerticalScrollBarEnabled(false);
web.setHorizontalScrollBarEnabled(false);**
我还要注意,我相信“shouldOverrideUrlLoading”仅适用于 WebView 中加载的初始 URL。这是该 WebView 中的一个链接 - 所以似乎不起作用。
我试过了。
关于如何使用户能够单击 WebView 中的链接并像浏览器一样打开关联应用程序的任何想法?
非常感谢!
/r
【问题讨论】:
【参考方案1】:好的 - 经过对不同主题的大量搜索后找到了答案。
答案就在于这样截取链接:
public boolean shouldOverrideUrlLoading(WebView view, String url)
if (url.endsWith(".mp3"))
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(url), "audio/*");
view.getContext().startActivity(intent);
return true;
else if (url.endsWith(".mp4") || url.endsWith(".3gp"))
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(url), "video/*");
view.getContext().startActivity(intent);
return true;
else
return super.shouldOverrideUrlLoading(view, url);
【讨论】:
谢谢 Robbe,我想在默认播放器中从我的应用程序播放流媒体 mp3,并且工作正常 :),但一旦我按下它就会停止播放并返回到我的应用程序。我有什么办法可以在后台播放吗?? 什么时候调用或者如何从webview调用这个方法?【参考方案2】:您将使用一个界面来加载一个带有 VideoView 的新 Activity,该 VideoView 执行媒体链接和等等等等……但我认为这是最简单的方法……
WebView WebContent = (WebView)findViewById(R.id.myWebView);
String htmlLink= "<a href=\"http://prueba.agenciareforma.com/webs/elnorte/blackberry/mp3/uno.mp3\">Open Mp3 here!</a>";
WebContent.loadDataWithBaseURL(null, htmlLink, "text/html", "utf-8", null);
WebSettings webSettings = WebContent.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(true);
更新:: 改变::
<a href="planetofrock.com/samples/lballad.mp3">Click Here</a>
到::
<a href="http://planetofrock.com/samples/lballad.mp3">Click Here</a>
【讨论】:
欣赏 - 会试一试。 这有点不同。在我尝试加载的网页中,链接位于页面本身。上面的示例旨在从 WebView 本身打开一个 mp3 链接。两者是分开的。 WebView 打开页面 (html),页面提供类似于上面的链接 (..Click Here<.... webview android> 嗯,我认为你在这里描述的一定是有效的!,你页面的链接是什么? 这是一个客户页面,所以我不能分享。但是很容易重新创建。制作一个简单的页面,其中包含指向 mp3 的简单链接。示例:planetofrock.com/samples/lballad.mp3">Click Here。然后在服务器上创建一个 WebView 并启动它:**web.loadUrl("www.yourtestpage.com/test.html") I我无法让 mp3 在 WebView 中启动 - 但在原生 Android 浏览器中完美运行。任何想法 - 我必须遗漏一些简单的东西......谢谢。 啊 - 抱歉 - 不,这是回复框的限制。缺少 HTTP——我的原版有——但评论框去掉了它。它位于服务器上的原始 html 文件中,并且在不在 WebView 中时工作正常(即在 Android 浏览器中工作)。 WebView 正在将整个 HTML URL 加载到上面有链接的起始页。还是打不开。我想用它打开音乐播放器应用。【参考方案3】:我有一个类似的页面正在加载一个 URL,并且该 URL 包含一个在其中播放音频的链接。它第一次工作正常,但第二次不播放。 webview的代码是:
WebSettings webSettings = this.webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
this.webview.setWebViewClient(new WebViewClient());
this.webview.setWebChromeClient(new WebChromeClient());
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
在我的页面上我有类似的音频标签
<audio id="audiotag1" style="display:none" preload="auto" hidden='true' autostart='false'>
<source src="../../Content/sound/NewOrder.wav" type="audio/x-wav">
</audio>
我通过 JQuery 调用它的方法来播放它
$('#audiotag1').play();
希望它对你有用。
【讨论】:
以上是关于从 Android WebView 中的链接播放 MP4 或 MP3的主要内容,如果未能解决你的问题,请参考以下文章
音频和视频未在 Android WebView HTML5 中播放
在 Amlogic Android Media Boxes 的 webview 中自动播放视频
Android webview不播放视频,jwembedder