在WebView中点击链接启动媒体播放器

5

我创建了一个使用WebView加载网站的应用程序。一切都运行良好,除了我无法在应用程序内播放任何视频文件。因此,我需要帮助让我的应用程序在单击以.mp4结尾的链接时启动mediaplayer。非常感谢您的帮助和提示!


你想在你的应用程序中使用自己的媒体播放器(SDK的MediaPlayer.java类),还是想启动系统默认的媒体播放器? - Mathias Conradt
2个回答

5
您需要覆盖webViewClient的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);
        }
    }
}

...你为webview分配的代码:

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

编辑: 还重要的是你要添加:

webView.getSettings().setAllowFileAccess(true);

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


感谢您的快速回复!我已经将代码添加到我的应用程序中并且能够进行编译而没有任何错误。但是当链接被点击时,它仍然无法加载媒体播放器。 - Kyle
添加webView.getSettings().setAllowFileAccess(true); 这将有所帮助。 我刚在我的代码中尝试了一下,它可以正常工作。 - Mathias Conradt
嘿,马蒂亚斯, 非常感谢你的帮助!我已经成功在模拟器上运行了它。我尝试在我的运行2.2的手机上加载应用程序,它会启动Web浏览器,然后关闭,让我回到我的应用程序。没有视频。我不太确定可能出了什么问题,除了我正在1.5上运行模拟器。你认为呢? - Kyle
你确定这个mp4文件是Android兼容的吗?因为mp4编码可能存在一些差异。请检查日志文件(adb shell logcat)是否有任何错误。请尝试从您的Webview中打开此mp4文件进行测试:http://www.law.duke.edu/cspd/contest/finalists/entries/documentariesandyou.mp4 它在许多示例中都被使用,并且肯定可以在Android上正常工作。(顺便说一句:我也在Nexus One 2.2上进行了测试,没有问题。) - Mathias Conradt
1
老实说,我只是重启了手机几次...现在每次尝试都完美地工作。我一点也不知道为什么。 - Kyle
显示剩余12条评论

2
注意:您可能还需要设置数据类型。这似乎解决了Android 4.0(冰淇淋三明治)中的一些问题。例如:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(url), "video/*");
startActivity(intent);`

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接