gpt4 book ai didi

android - 强制 webview 显示桌面站点

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:56:18 34 4
gpt4 key购买 nike

当我们查看 URL 中不包含单词 google 的页面时,我有以下 webview 客户端将用户代理设置为桌面浏览器。 (也做其他事情,但一切正常)。

 webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (!url.contains("google")) {
String newUA= "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/20100101 Firefox/4.0";
webView.getSettings().setUserAgentString(newUA);
view.loadUrl(url);
}else {
webView.getSettings().setUserAgentString(null);
view.loadUrl(url);
}
return true;
}
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
}
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
String page = webView.getUrl();
if (!(page.contains("google"))){
grabit.setVisibility(View.VISIBLE);

}else{
grabit.setVisibility(View.GONE);

}
webView.loadUrl("javascript: function loadScript(scriptURL) { var scriptElem = document.createElement('SCRIPT'); scriptElem.setAttribute('language', 'JavaScript'); scriptElem.setAttribute('src', scriptURL); document.body.appendChild(scriptElem);} loadScript('"+CFG.Bookmarklet+"');");
progressBar.setVisibility(View.INVISIBLE);
if (webView.canGoBack()){
left.setImageResource(R.drawable.ic_arrowleft);
}else{
left.setImageResource(R.drawable.ic_arrowleft_gray);
}
if (webView.canGoForward()){
right.setImageResource(R.drawable.ic_arrowright);
}else{
right.setImageResource(R.drawable.ic_arrowright_gray);
}

}
});

这个问题是,虽然在某些网站上它工作得很好,但在其他网站上它不起作用,而在某些网站上它似乎只是改变了视口(viewport)。几个例子是:

> Argos - shows mobile
> Tesco - shows mobile but view port has changed
> Amazon - works
> John Lewis - shows mobile but view port has changes
> Play.com - works

那么我缺少什么吗?它无法运行的网站的另一种方式是检查浏览器以决定显示什么?

Chrome 中的“显示桌面版本”似乎对这些网站工作正常..所以 chrome 可能做了其他事情?

谢谢

最佳答案

您可以使用 this WebView subclass 中的 setDesktopMode(true)或阅读如何 implemented详细点。

这样,您就不必设置固定的用户代理字符串。此外,仅设置用户代理字符串通常是不够的。当然,这取决于网站,因为每个网站都使用自己的方式来确定客户端是在移动设备上还是在桌面上。

关于android - 强制 webview 显示桌面站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19953717/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com