如何在webview中请求桌面?

问题描述 投票:0回答:1

我搜索了谷歌和堆栈交换,发现了大约15种不同的解决方案,但都没有。他们要么在编译时抛出语法错误,要么就是在我要求的网站上不起作用。 (Tradingview.com/chart)

当我使用chrome访问我的目标网站并单击“请求桌面”时,它可以正常工作。在我正在构建的应用程序的webview中,它不起作用。 Google显示为桌面,但我的目标网站没有。但是,它确实在chrome或Firefox中正确显示,而不是我的应用程序。

我尝试了什么:

这里提供的每个解决方案都是:Setting WebView to view Desktop Site and Not Mobile Site

包括这个库https://github.com/delight-im/Android-AdvancedWebView/blob/master/README.md

How to open desktop site in webview in android

How to load Desktop view instead of mobile view in webview

其他setUserAgentString in Android webview has no effect on HTTP header used in loadURL()

其中大多数都不会导致任何更改(在我的目标网站上),而其中一些会抛出语法错误,有时会导致13个错误。

我倾向于看到留下的评论说“联系网站所有者让他们改变他们的网站”。这不是一个可接受的解决方案,如果没有进一步的解释,它是无益的。如何在Chrome,Firefox,Opera等中使用。我能够看到该页面的桌面版本,但它不能在webview上运行?如果唯一的答案是“网站的错误与所有者联系”,则需要对此进行解释。

现在我在这里有这个,

WebView webView = (WebView) findViewById(R.id.webview);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient());
    webView.getSettings().setUserAgentString("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/20100101 Firefox/57.0");
    webView.loadUrl("http://facebook.com");

这在Facebook.com上运行正常,但不适用于TradingView。

android android-webview user-agent
1个回答
0
投票

经过多次反复试验,我找到了解决方案。这不是完美的,但更接近。 (也许评论可以帮助我纠正我的代码,我已经做空了)

webview_chart.getSettings().setLoadWithOverviewMode(true);

webview_chart.setInitialScale(200);
 webview_chart.getSettings().setUseWideViewPort(false);
 webview_chart.getSettings().setMinimumFontSize(16);

String newUA= "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19";
 webview_chart.getSettings().setUserAgentString(newUA);
 webview_chart.loadUrl("http://tradingview.com/chart");

这似乎做的是欺骗更大的屏幕尺寸,这导致响应式设计发送桌面版本而不是移动。它并不完美,因为你可以看到我必须调整最小字体大小以便可读,而在较小的屏幕上它仍然不起作用。

但这就是您可以发送桌面标题并仍然可以获得移动网站的原因。

(我在其他任何地方都没有找到这样的解释,所以我认为对其他人有同样的问题会有所帮助)

© www.soinside.com 2019 - 2024. All rights reserved.