Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将WebView设置为查看桌面站点而不是移动站点_Android_Android Webview - Fatal编程技术网

Android 将WebView设置为查看桌面站点而不是移动站点

Android 将WebView设置为查看桌面站点而不是移动站点,android,android-webview,Android,Android Webview,我已经做了很多关于堆栈溢出的研究,也做了很多谷歌的研究,但是我没有发现任何对我有用的东西。我希望站点查看桌面站点而不是移动站点。我该怎么做?我希望它直接转到桌面站点 WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.apotter96.webs.com/"); } 您需要更改用户代理: 下面是一个例子: 更改webview的用户代理 String newUA

我已经做了很多关于堆栈溢出的研究,也做了很多谷歌的研究,但是我没有发现任何对我有用的东西。我希望站点查看桌面站点而不是移动站点。我该怎么做?我希望它直接转到桌面站点

WebView myWebView = (WebView) findViewById(R.id.webview); 
    myWebView.loadUrl("http://www.apotter96.webs.com/");
}

您需要更改用户代理:

下面是一个例子:

更改webview的用户代理

 String newUA="Foo/"; // Change this to desired UA


您可以使用WebView将视图显示为带有fit-in mobile display的桌面站点

        webView = (WebView)findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);

        webView.getSettings().setSupportZoom(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setDisplayZoomControls(false);

        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webView.setScrollbarFadingEnabled(false);

此方法帮助您在webview上设置DesktopMode

public void setDesktopMode(WebView webView,boolean enabled) {
    String newUserAgent = webView.getSettings().getUserAgentString();
    if (enabled) {
        try {
            String ua = webView.getSettings().getUserAgentString();
            String androidOSString = webView.getSettings().getUserAgentString().substring(ua.indexOf("("), ua.indexOf(")") + 1);
            newUserAgent = webView.getSettings().getUserAgentString().replace(androidOSString, "(X11; Linux x86_64)");
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        newUserAgent = null;
    }

    webView.getSettings().setUserAgentString(newUserAgent);
    webView.getSettings().setUseWideViewPort(enabled);
    webView.getSettings().setLoadWithOverviewMode(enabled);
    webView.reload();
}
这样说吧

移动模式:
setDesktopMode(webView,false)


桌面模式:
setDesktopMode(webView,true)

经过长时间的搜索,这对我很有效-

    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);

    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setDisplayZoomControls(false);

    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setScrollbarFadingEnabled(false);

对已接受答案的一点更新。这是新字符串。写这篇文章是因为有人在评论中遇到了“更新浏览器”的问题

String newUA= "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1";
mWebView.getSettings().setUserAgentString(newUA);

如果您有更新浏览器错误,您可以尝试设置apple safari UA或将UA替换为
Mozilla/5.0(Windows NT 10.0;WOW64;rv:47.0)Gecko/20100101 Firefox/47.0
这对我来说100%有效

webview =(WebView)findViewById(R.id.webView);
        webview.getSettings().setMinimumFontSize(12);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.getSettings().setLoadWithOverviewMode(true);
        webview.getSettings().setUseWideViewPort(true);
        webview.getSettings().setSupportZoom(true);
        webview.getSettings().setBuiltInZoomControls(true);
        webview.getSettings().setDisplayZoomControls(false);
        webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webview.setScrollbarFadingEnabled(false);
        String newUA= "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Safari/602.1.50";
        webview.getSettings().setUserAgentString(newUA);
        webview.loadUrl("https://solveforum.com");
试试这个

String ua = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36";

有些网站不使用用户代理来确定是否需要显示页面的移动版或桌面版。 有些页面使用屏幕大小来完成此操作


我构建了一个应用程序,在桌面模式下使用页面,但它不能正常工作。始终显示移动版本,因为页面使用屏幕大小而不是用户代理字符串。

唯一对我有效的解决方案(javascript将执行多次,但这是目前唯一有效的解决方案)

您也可以设置桌面UA字符串

webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");

不要认为这真的是一种可能性,因为当他们的网站发现你是一个手机用户时,你就无法掌控他们的网站。也许如果你知道他们是如何识别和保存它的,你可以用一些javascript或者其他什么来操作它。我该怎么用javascript来做呢?听起来你在寻找一些方法来更改用户的代理字符串?你有没有到处搜索过,当我用谷歌搜索它时,似乎有很多资源。你可以使用
setDesktopMode(true)
或者阅读它的内容。设置myWebView.setInitialScale(100);为我工作,但在myWebView.loadUrl()之前添加webView.setWebViewClient(新WebViewClient());如何启用Flash Player?试试这个。这工作正常,但使用此设置会产生副作用。webview不会在活动的onDestroy()中销毁。我正在使用mWebView.destroy();在国家的主权功能中activity@BhanuSharma我已经发布了我的答案,可以检查,并让我知道观察用户代理字符串,它现在稍微修改,还包括chrome版本。这可能会影响最终结果。。。看看开发者官方:这个设置很有魅力。这里的所有内容都是关于用户代理的,这对于很多网站来说是不够的。这个也适合我,谢谢分享。这应该是被接受的答案,直到更好的东西出现。我尝试了几件事,以找出有最初的规模缩小,以适应屏幕,但没有一个我是满意的。看起来我将把它保留到1.0,让用户暂时缩小。找到它:view.evaluateJavascript(“document.querySelector('meta[name=\'viewport\']”)。setAttribute('content','width=1024px,initial scale='+(window.screen.width/1024));,null)您还需要确保启用了宽视口:webView.getSettings().setUseWideViewPort(true);@斯莱恩救了我的命!!:这对我有用
        @Override
        public void onLoadResource(WebView view, String url) {
           view.evaluateJavascript("document.querySelector('meta[name=\"viewport\"]').setAttribute('content', 'width=1024px, initial-scale=' + (document.documentElement.clientWidth / 1024));", null);
        }
webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");