从 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 中播放

在 WebView Android 中键入时播放声音

在 Amlogic Android Media Boxes 的 webview 中自动播放视频

Android webview不播放视频,jwembedder

Android WebView 中的 HTML5 视频不一致

Android webview中如何播放网络视频