我正在尝试在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);
}
为什么它在所有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);我得到了这个:
答案 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);