从Android WebView中的链接播放MP4或MP3

时间:2011-03-10 17:32:29

标签: jquery android webview mp3 hyperlink

我搜索的范围很广,似乎无法找到确切的答案,甚至无法关闭。

我有一个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

3 个答案:

答案 0 :(得分:8)

好的 - 在搜索了不同的主题之后找到了答案。

答案在于截取链接:

     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);
        }
     }

答案 1 :(得分:0)

你将使用一个界面,用一个VideoView加载一个新的Activity来执行媒体链接,等等等等......但我认为这是一个简单的方法......

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);     

<强> UPDATE :: 改变::

<a href="planetofrock.com/samples/lballad.mp3">Click Here</a>

要::

<a href="http://planetofrock.com/samples/lballad.mp3">Click Here</a>

答案 2 :(得分:0)

我有一个类似的页面正在加载一个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();

希望它对你有用。