如何在网页浏览中申请桌面?

时间:2018-01-01 17:42:55

标签: android android-webview user-agent

我搜索了谷歌和堆栈交换,发现了大约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。

1 个答案:

答案 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");

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

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

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