我有一个 webview,如果用户点击一个链接,它会在同一个 webview 中打开(我用 shouldOverrideUrlLoading() 控制它)但是如果它是一个视频链接(mp4、3gp)它不会启动媒体播放器来重现视频(就像在普通浏览器应用程序中一样)。在 web 视图中单击视频链接时,如何强制启动媒体播放器?
谢谢!
在这种情况下,您需要执行一个 Intent 来加载外部视频 url。这也方便用户毫无问题地返回上一个视图(活动)。见下面的代码......
/*-----------------------------------------------------------------------------------------------
* WebViewClientHandler() allows for overriding default phone web browser so we can load in gui
*----------------------------------------------------------------------------------------------*/
private class WebViewClientHandler extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri uri = Uri.parse("http://YOUTSTREAM.FLV");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
return true;
}
}
现在可能无关紧要,但您在浏览器中看到的不是媒体播放器,而是 Android 拥有的 VideoView。单击视频链接时,会调用onShowCustomView (View view, WebChromeClient.CustomViewCallback callback)
WebChromeClient 。显示该视图然后通知 WebView 不再需要该视图是应用程序的义务。
我的意思是当 url 指向一个视频文件时,我希望媒体播放器能够复制它。webview 正在处理所有其他 URL,这没关系,但是当 URL 指向视频文件时,当我尝试加载该 url 时没有任何反应。
你应该试试这个
WebView webView = (WebView) findViewById(R.id.embeddedWebView);
webView.setDownloadListener(new DownloadListener()
{
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long size)
{
Intent viewIntent = new Intent(Intent.ACTION_VIEW);
viewIntent.setDataAndType(Uri.parse(url), mimeType);
try
{
startActivity(viewIntent);
}
catch (ActivityNotFoundException ex)
{
Log.w("YourLogTag", "Couldn't find activity to view mimetype: " + mimeType);
}
}
});
首先,据我所知,Android 只支持 rtsp 播放。所以点击链接,给出 document.location.href="rtsp://your video url";