【问题标题】:Does not work desktop mode android WebView, why?不工作桌面模式android WebView,为什么?
【发布时间】:2023-03-19 22:50:01
【问题描述】:

我使用的是WebView,我需要访问移动桌面模式网站。但它没有按预期工作。

我正在使用Android Studio version 3.5。我附上了下面的代码。请解决我的问题。

        @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    String newUA= "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1";

    webView = (WebView) findViewById(R.id.webview);
    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);
    webSettings = webView.getSettings();
    webSettings.setUserAgentString(WebSettings.getDefaultUserAgent(this));
    webView.getSettings().setUserAgentString(newUA);

    webSettings.setAllowFileAccess(true);
    webView.setWebViewClient(new Client());
    webView.setWebChromeClient(new ChromeClient());

    if (Build.VERSION.SDK_INT >= 19) {
        webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
    }
    else if(Build.VERSION.SDK_INT >=11 && Build.VERSION.SDK_INT < 19) {
        webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }
    // webView.loadUrl("http://35.154.11.144"); //CMS URL
    webView.loadUrl("https://erp.vvsugars.com/web/login");// VMS URL
}

【问题讨论】:

    标签: android url webview


    【解决方案1】:

    你还没有设置用户代理.. 您可以根据需要设置自定义用户代理。

    但如果您想设置从设备本身获取的正确用户代理,请使用以下代码。

    WebSettings webSettings = webView.getSettings();
    String userAgent = String.format("%s [%s/%s]", webSettings.getUserAgentString(), "App Android", BuildConfig.VERSION_NAME);
    webSettings.setUserAgentString(userAgent);
    

    编辑:

    从 API 级别 17 开始,WebSettings 中有一个静态方法,它返回 WebView 使用的默认 User-Agent 字符串:

    WebSettings.getDefaultUserAgent(context)

    由于该方法是静态的,因此您不需要 WebView 实例来运行它。

    所以代码应该是,

    webSettings.setUserAgentString(WebSettings.getDefaultUserAgent(context));
    

    如果您在活动中,请尝试这样的上下文,

    webSettings.setUserAgentString(WebSettings.getDefaultUserAgent(this));
    

    并且记得在你实例化 webSettings 之后加上那一行..

    如果您想使用低于 api 级别,请使用自定义用户代理字符串。下面是一个示例。

    Mozilla/5.0 (Linux; U; Android 2.2; en-gb; Nexus One Build/FRF50)AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

    将上面的字符串放在 setUserAgentString 方法中..

    或者,如果您想在下面轻松修复。

    webSettings.setUserAgentString("Android");
    

    Use a user agent string from official chrome website here. Go to the android webview part

    **祝你好运**

    更新.... 好吧,我以为你想要安卓模式。 但是你想要桌面模式.. 使用下面的核心。它会起作用的。

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

    mWebView.getSettings().setUserAgentString(newUA);

    编辑.. 我已经更新了上面的用户字符串。请使用它并重试..它仍然不起作用然后使用下面的代码而不设置用户代理字符串..

    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);
    

    【讨论】:

    猜你喜欢
    • 2019-03-24
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多