gpt4 book ai didi

android - Webview 在低于 4.0 的 android 版本上错误地加载页面

转载 作者:行者123 更新时间:2023-12-04 18:07:51 28 4
gpt4 key购买 nike

我试图在 Webview 中显示结果网页,但在低于 4.0 的 Android 版本上我得到了一个奇怪的结果。我有一个打印屏幕,有什么区别。

它在 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

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

更新 2

我尝试了几乎所有我能在网站上找到的关于 WebView 和加载内容的内容,但我无法弄清楚问题出在哪里。现在这是我的代码,尽管它仅在启用 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

最佳答案

你试过了吗

webView.setInitialScale(50);

关于android - Webview 在低于 4.0 的 android 版本上错误地加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22450309/

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