【问题标题】:Force mobile version of website for WebView为 WebView 强制移动版网站
【发布时间】:2013-10-30 11:29:09
【问题描述】:

我正在将 URL 加载到 webview 中以将其显示到我的应用程序中。我遇到的问题是,网站并不总是能识别出我是电话(为什么会这样?)。我究竟如何强制 webview 发送到我是手机的网站?目前我正在这样做

webview.getSettings().setUserAgentString("Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3");

但这不起作用?因为我没有使用 iPhone,它不会起作用吗?我不认为这是原因,因为它只是设置用户代理......

这是相关代码(无关代码只包含数据,例如从意图中获取 url 和格式化字符串)

//package

//imports

public class WebViewing extends Activity {

    private WebView webview;
    private ProgressDialog dialog;

    //init strings

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webviewer);

        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);

        //init variables

        //get intent data and format string


        this.webview = (WebView) findViewById(R.id.webView1);
        webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webview.getSettings().setUserAgentString("Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3"); 
        webview.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                if (dialog.isShowing()) {
                    dialog.dismiss();
                }
            }

            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
        dialog.setMessage("Website wird geladen...\nDies ist abh\u00E4ngig von deiner Internet-Verbindung.");
        dialog.setCanceledOnTouchOutside(false);
        dialog.show();
        webview.loadUrl(sourceURL);
        setTitle("Platz: " + plusRank + " - " + realDate);

    }

    //onCreateOptionsMenu method

    //onOptionsItemSelected method
}

我也为用户代理尝试了这个字符串

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

【问题讨论】:

标签: java android mobile webview


【解决方案1】:

尝试输入以下几行:-

webview.getSettings().setJavaScriptEnabled(true);
 webview.getSettings().setUserAgentString("Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3"); 

【讨论】:

  • 似乎启用 JavaScript 解决了这个问题。 :) 谢谢
  • 设置用户代理字符串可能会也可能不会解决问题,这完全取决于站点正在寻找的用户代理字符串。它可能使用 JavaScript 来做到这一点,这就是为什么启用 JavaScript 更有可能可靠地解决问题
【解决方案2】:

我知道我来晚了。但是,希望它对仍然面临同样问题的人有所帮助,我将在这里写下我的解决方案。

接受的答案对我不起作用。以下是。

Java:

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

科特林:

webView.settings.javaScriptEnabled = true
webView.settings.useWideViewPort = true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2019-03-18
    • 2011-10-09
    • 2012-06-14
    • 1970-01-01
    相关资源
    最近更新 更多