Webview在低于4.0的Android版本上加载页面错误

时间:2014-03-17 09:09:10

标签: android webview

我正在尝试在Webview中显示结果网页,而我在Android版本低于4.0时得到了一个奇怪的结果。我有一个与不同之处的打印屏幕。

它在4.0以上的版本上正确显示,并且在我的Galaxy S2上运行正常,但它在2台配备Android 2.2和2.3的三星手机以及模拟器上显示错误。我尝试使用Android 3.0的模拟器,我有相同的结果。作为一个注释,网页结果在浏览器上工作正常,我觉得网站做了一些重定向,如果有帮助的话。

以下是我用来加载页面的代码:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.webview);

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

    // Show the web page
    webView.loadDataWithBaseURL(null, MainActivity.content, "text/html",
            "UTF-8", null);

}

image

为什么它在所有Android版本上都不起作用的任何想法?

更新 这是正式的,我尝试使用多个版本的WebViews加载网站URL,使用不同的设置,并且网站在Android版本低于4的设备上无法正确加载。我被卡住了。

更新1

我注意到在旧版本上并不是因为它没有正确加载页面,问题是它试图加载页面的Web版本而不是移动版本。我尝试更改用户代理但没有任何区别。

更新2

我在网站上尝试了几乎所有关于WebViews和加载内容的内容,我无法弄清楚问题是什么。这是我的代码,虽然它只在启用了java脚本时才能正常工作。

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.webview);

    WebView webView = (WebView) findViewById(R.id.webView1);

    webView.setWebChromeClient(new WebChromeClient());
    webView.setWebViewClient(new WebViewClient());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.setPersistentDrawingCache(0);
    webView.setInitialScale(1);
    webView.getSettings().setDefaultTextEncodingName("utf-8");

    String webData = MainActivity.content;

    webData = webData.replace("#", "%23");
    webData = webData.replace("%", "%25");
    webData = webData.replace("\\", "%27");
    webData = webData.replace("?", "%3f");
    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.loadData(webData, "text/html; charset=UTF-8", null);

}

// webView.loadDataWithBaseURL(MainActivity.url, MainActivity.content,
// "text/html", "UTF-8", null);

// webView.loadData(MainActivity.content, "text/html; charset=utf-8",
// "UTF-8");

我有什么遗失的吗?

此外,如果它有帮助,这是我用于在webview中显示的HTTP Post响应的代码:

HttpClient httpClient = new DefaultHttpClient();

        HttpPost httpPost = new HttpPost("http://www.fernbus24.de/bus-"
                + vonCopy + "-" + nachCopy);
        url = "http://www.fernbus24.de/bus-" + vonCopy + "-" + nachCopy;

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("_searchbox",
                "d5ed667846"));

        nameValuePairs.add(new BasicNameValuePair("von", von));
        nameValuePairs.add(new BasicNameValuePair("nach", nach));
        nameValuePairs.add(new BasicNameValuePair("datum", datum));
        // etc...
        try {
            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpClient.execute(httpPost);

            InputStream is = response.getEntity().getContent();
            Log.i("Test", "response status"
                    + response.getStatusLine().getStatusCode());

            InputStreamReader inputStreamReader = new InputStreamReader(is);

            BufferedReader bufferedReader = new BufferedReader(
                    inputStreamReader);

            StringBuilder stringBuilder = new StringBuilder();

            String bufferedStrChunk = null;

            while ((bufferedStrChunk = bufferedReader.readLine()) != null) {
                stringBuilder.append(bufferedStrChunk);
            }

            content = stringBuilder.toString();

            Log.i("Test", "content is " + content);

        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

更新3

我尝试过设置webView.setInitialScale(50);我得到了这个:Image

2 个答案:

答案 0 :(得分:0)

试试这个;

Webview webView = (WebView) findViewById(R.id.webView1);


    wb.getSettings().setJavaScriptEnabled(true);
    wb.setWebViewClient(new WebViewClient());
    wb.loadUrl("URL");

如果它不起作用,请写下您的网址然后我会尝试。

答案 1 :(得分:0)

你有没有试过

webView.setInitialScale(50);