我搜索了谷歌和堆栈交换,发现了大约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。
答案 0 :(得分: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");
这似乎做的是欺骗更大的屏幕尺寸,这会导致响应式设计发送桌面版而不是移动版。它并不完美,因为你可以看到我必须调整最小字体大小以便可读,并且在较小的屏幕上它仍然无法工作。
但这就是您发送桌面标题并仍然可以获得移动网站的原因。
(我还没有在其他任何地方找到这样的解释,所以我认为对其他人有同样的问题会有所帮助)