【问题标题】:Playing an MP4 or MP3 from a Link within an Android WebView从 Android WebView 中的链接播放 MP4 或 MP3
【发布时间】: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

【问题讨论】:

    标签: jquery android webview mp3 hyperlink


    【解决方案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();
    

    希望它对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多