Android webview url 重定向

发布于 2024-11-30 23:49:50 字数 324 浏览 0 评论 0 原文

我的应用程序中有一个 webview,启动时会显示一个 html 页面。该页面有一个超链接,单击该超链接应该会显示视频。

当我运行该应用程序并单击视频超链接时,没有任何反应。但如果我在 Android 浏览器中加载相同的页面,那么它会启动默认视频播放器,一切正常。

我通过在 shouldOverrideUrlLoading 方法中放置一条日志语句来进一步调试它,并注意到,当单击超链接时,它会重定向到另一个链接,然后重定向到另一个链接(最终视频流 url)。

我的问题是:为什么该链接可以在默认的 Android 浏览器中完美运行,而不是通过 Web 视图运行。

谢谢

I have a webview in my application which upon launch displays an html page. The page has a hyperlink which on click is supposed to display a video.

When i run the application and click on the video hyperlink link , nothing happens. But if i load the same page in android browser, then it launches a default video player and everything works fine.

I debugged it furthers by putting a log statement in shouldOverrideUrlLoading method and noticed that, when the hyperlink is clicked it gets redirected to another link and then to another link (final video streaming url).

My question is : why would the link work perfectly in default android browser and not through a webview.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏见 2024-12-07 23:49:50

发生的情况是,当您单击超链接时,该链接内可能有一些弹出窗口。您需要在 webview 的 WebChromeClient 中定义 onCreateWindow 函数。这处理如何处理打开新窗口或弹出窗口的调用。

public boolean onCreateWindow (WebView view, boolean dialog, boolean userGesture, Message resultMsg) {

    ((WebView.WebViewTransport) resultMsg.obj).setWebView(myWebView);
    resultMsg.sendToTarget(); 
    return true;
}

What is happening is when you click the hyperlink, that link probably has some popups inside of it. You need to define the onCreateWindow function in your webview's WebChromeClient. This handles how calls to open new windows or popups are handled.

public boolean onCreateWindow (WebView view, boolean dialog, boolean userGesture, Message resultMsg) {

    ((WebView.WebViewTransport) resultMsg.obj).setWebView(myWebView);
    resultMsg.sendToTarget(); 
    return true;
}
一束光,穿透我孤独的魂 2024-12-07 23:49:50

声明您的 WebView 后,您应该启用 javascript,然后您的 WebView 将用作浏览器。

例如:

WebView mwebview = new WebView(this);
setContentView(mwebview);

mwebview.getSettings().setJavaScriptEnabled(true);

mwebview.getSettings().setPluginState(PluginState.ON); // this is for newer API's

After declaring your WebView you should set javascript enabled, then your WebView will work as a browser.

For example:

WebView mwebview = new WebView(this);
setContentView(mwebview);

mwebview.getSettings().setJavaScriptEnabled(true);

or

mwebview.getSettings().setPluginState(PluginState.ON); // this is for newer API's
女皇必胜 2024-12-07 23:49:50

基本上,不要指望您的嵌入式 WebView 与 Android 默认浏览器的工作方式相同。默认浏览器构建在相同的 WebView 上,但有很多自定义内容。 (特别是围绕非标准 uri、HTML5 的东西)

我遵循了这里的代码: WebView 和 HTML5 ,然后我将视频链接放入视频标签,然后我就在我自己的 WebView 版本中播放视频了。该行为与默认浏览器略有不同。如果有更多时间,我们可以通过查看其代码来弄清楚这一点,但无论如何......

Basically, do not expect your embedded WebView works the same as Android default Browser. The default Browser is built on the same WebView, but there are lots a customization. (Especially around the no-standard uri, HTML5 stuff)

I followed code from here: WebView and HTML5 <video>, and I put the video link to a video tag, and I got the Video playing in my own version of WebView. The behavior is a little different from the default Browser. Given more time, we could figure that out by looking at its code, but anyways ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文