【问题标题】:launch mediaplayer on link click in WebView在 WebView 中单击链接时启动媒体播放器
【发布时间】:2010-08-01 04:43:30
【问题描述】:

我创建了一个使用 WebView 加载网站的应用程序。一切正常,只是我无法在应用程序中播放任何视频文件。所以,我正在寻求帮助是让我的应用程序在我单击以 .mp4 结尾的链接时启动媒体播放器。任何帮助和提示将不胜感激!

【问题讨论】:

  • 您想在您的应用程序中使用自己的媒体播放器(SDK 的 MediaPlayer.java 类),还是要启动系统的默认媒体播放器?

标签: android


【解决方案1】:

您需要覆盖 webViewCient 的 shouldOverrideUrlLoading 方法...

final class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.endsWith(".mp4") {
            Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url));
            view.getContext().startActivity(intent);
            return true;
        } else {
            return super.shouldOverrideUrlLoading(view, url);
        }
    }
}

...您分配给您的网络视图:

WebViewClient webViewClient = new MyWebViewClient();
webView.setWebViewClient(webViewClient);

编辑: 添加也很重要:

webView.getSettings().setAllowFileAccess(true);

允许文件下载/流,例如 mp4 文件。

【讨论】:

  • 感谢您的快速回复!我已将代码添加到我的应用程序中,它编译时没有错误。但是单击链接时它仍然不会加载媒体播放器。
  • 添加 webView.getSettings().setAllowFileAccess(true);这会有所帮助。我刚刚在我的代码中尝试过,它可以工作。
  • 嗨,Mathias,非常感谢您的帮助!我已经能够让它在模拟器上运行。我尝试在运行 2.2 的手机上加载该应用程序,它启动 Web 浏览器然后关闭,让我立即回到我的应用程序。根本没有视频。除了我在 1.5 上运行模拟器之外,我不太确定可能出了什么问题。你怎么看?
  • 您确定 mp4 与 Android 兼容(因为 mp4 编码之间可能存在一些差异)。日志文件 (adb shell logcat) 中的任何错误。请尝试从您的 web 视图中打开此 mp4 进行测试:law.duke.edu/cspd/contest/finalists/entries/… 它已在许多示例中使用,并且肯定适用于 Android。 (顺便说一句:我还在 Nexus One 2.2 上进行了测试,没有出现问题。)
  • 老实说,我所做的只是重启手机几次......现在每次我尝试它时它都能完美运行。我不知道。
【解决方案2】:

注意:您可能还想设置数据类型。这似乎解决了 Android 4.0(冰淇淋三明治)中的一些问题。例如:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(url), "video/*");
startActivity(intent);`

【讨论】:

    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多