Android的web视图没有正确显示HTML内容 [英] Android webview not rendering html content correctly
问题描述
我完全不知道,如果这是正确的方式做到这一点,但我显示启动画面,只要web视图加载,当web视图加载完成,我显示的WebView。
但web视图的HTML内容没有被正确地呈现。它正确地显示内容内置的浏览器在我的Android手机,和所有其他的设备我有。 所以,问题仅限于该应用程序。
MainActivity.java
包dk.zerone.vuc;
进口android.net.ConnectivityManager;
进口android.net.NetworkInfo;
进口android.os.Bundle;
进口android.app.Activity;
进口android.app.AlertDialog;
进口android.content.Context;
进口android.content.DialogInterface;
进口android.graphics.Color;
进口android.util.Log;
进口android.view.Menu;
进口android.view.View;
进口android.webkit.WebView;
进口android.webkit.WebViewClient;
公共类MainActivity延伸活动{
公众最终布尔networkCheck(){
ConnectivityManager CONNEC =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
如果(connec.getNetworkInfo(0).getState()== NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(0).getState()== NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState()== NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState()== NetworkInfo.State.CONNECTED){
返回true;
}否则如果(connec.getNetworkInfo(0).getState()== NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState()== NetworkInfo.State.DISCONNECTED){
返回false;
}
返回false;
}
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
/ *闪屏* /
的setContentView(R.layout.splash);
如果(networkCheck()){
字符串URL =http://mobil.vucfyn.dk/mobil;
最后的WebView的WebView;
的WebView =新的WebView(MainActivity.this);
webview.loadUrl(URL);
webview.setWebViewClient(新WebViewClient(){
@覆盖
公共布尔shouldOverrideUrlLoading(web视图查看,字符串URL){
//view.loadUrl(url);
返回false;
}
@覆盖
公共无效onPageFinished(web视图查看,字符串URL){
super.onPageFinished(查看,网址);
的setContentView(web视图);
}
});
} 其他 {
AlertDialog alertDialog =新AlertDialog.Builder(MainActivity.this).create();
alertDialog.setTitle(Fejl);
alertDialog.setMessage(不收forbindelse直到internettet);
alertDialog.setButton(OK,新DialogInterface.OnClickListener(){
公共无效的onClick(DialogInterface对话,诠释它){
}
});
alertDialog.show();
}
}
@覆盖
公共布尔onCreateOptionsMenu(功能菜单){
。getMenuInflater()膨胀(R.menu.activity_main,菜单);
返回true;
}
}
LogCat中输出:
9月8日至29号:29:56.572:D / dalvikvm(545):GC_FOR_ALLOC释放66K,3%的自由10191K / 10503K,暂停58ms
九月八号至29号:29:56.579:I / dalvikvm堆(545):增长堆(破片的情况下),以11.036MB为1048592字节分配
九月八号至29号:29:56.640:D / dalvikvm(545):GC_CONCURRENT释放1K,免费4%11214K / 11591K,暂停4毫秒+ 4ms的
九月八号至29号:29:56.849:我/的WebView(545):webview.loadUrl(URL)
九月八号至29号:29:57.139:D / gralloc_goldfish(545):没有GPU的仿真模拟器检测。
九月八号至29号:29:57.849:E /铬(545):外部/铬/ NET / disk_cache / backend_impl.cc:1097:0829/092957:ERROR:backend_impl.cc(1097)]严重错误发现-8
九月八号至29号:29:58.029:W /铬(545):外部/铬/ NET / disk_cache / storage_block-inl.h:119:0829/092958:警告:storage_block-inl.h(119)]未能数据加载。
九月八号至29号:29:58.029:W /铬(545):外部/铬/ NET / disk_cache / storage_block-inl.h:119:0829/092958:警告:storage_block-inl.h(119)]未能数据加载。
九月八号至29号:29:58.039:W /铬(545):外部/铬/ NET / disk_cache / storage_block-inl.h:119:0829/092958:警告:storage_block-inl.h(119)]未能数据加载。
九月八号至29号:29:58.059:E /铬(545):外部/铬/ NET / disk_cache / entry_impl.cc:830:0829/092958:ERROR:entry_impl.cc(830)]无法保存用户数据
九月八号至29号:30:00.349:E / libEGL(545):调用的OpenGL ES API没有当前上下文(每个线程记录一次)
九月八号至29号:30:00.360:D / ShaderProgram(545):无法加载顶点着色器!
九月八号至29号:30:00.360:E / libEGL(545):调用的OpenGL ES API没有当前上下文(每个线程记录一次)
九月八号至29号:30:00.360:D / ShaderProgram(545):无法加载顶点着色器!
九月八号至29号:30:00.360:E / libEGL(545):调用的OpenGL ES API没有当前上下文(每个线程记录一次)
九月八号至29号:30:00.360:D / ShaderProgram(545):无法加载顶点着色器!
九月八号至29号:30:00.360:E / libEGL(545):调用的OpenGL ES API没有当前上下文(每个线程记录一次)
九月八号至29号:30:00.360:D / ShaderProgram(545):无法加载顶点着色器!
九月八号至29号:30:00.360:E / libEGL(545):调用的OpenGL ES API没有当前上下文(每个线程记录一次)
九月八号至29号:30:00.360:D / ShaderProgram(545):无法加载顶点着色器!
如果该网站有你缺少的JavaScript这一行:
webView.getSettings()setJavaScriptEnabled(真)。
如果你的目标是高于2.3.3尝试在你的清单文件中添加这一点。
安卓hardwareAccelerated =真
I have absolutely no idea if this is the right way to do it, but i am displaying a splashscreen as long as the webview is loading, when the webview is done loading, i display the webview.
But the HTML content of the webview is not being rendered correctly. Its displaying the content correctly in the built-in browser on my Android phone, and on every other device i have. So the problem is confined to this app.
MainActivity.java
package dk.zerone.vuc;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
public final boolean networkCheck() {
ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED ) {
return true;
} else if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ) {
return false;
}
return false;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* Splash screen */
setContentView(R.layout.splash);
if(networkCheck()) {
String url = "http://mobil.vucfyn.dk/mobil";
final WebView webview;
webview = new WebView(MainActivity.this);
webview.loadUrl(url);
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//view.loadUrl(url);
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
setContentView(webview);
}
});
} else {
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
alertDialog.setTitle("Fejl");
alertDialog.setMessage("Ingen forbindelse til internettet");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
alertDialog.show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
LogCat output:
08-29 09:29:56.572: D/dalvikvm(545): GC_FOR_ALLOC freed 66K, 3% free 10191K/10503K, paused 58ms
08-29 09:29:56.579: I/dalvikvm-heap(545): Grow heap (frag case) to 11.036MB for 1048592-byte allocation
08-29 09:29:56.640: D/dalvikvm(545): GC_CONCURRENT freed 1K, 4% free 11214K/11591K, paused 4ms+4ms
08-29 09:29:56.849: I/WebView(545): webview.loadUrl(url)
08-29 09:29:57.139: D/gralloc_goldfish(545): Emulator without GPU emulation detected.
08-29 09:29:57.849: E/chromium(545): external/chromium/net/disk_cache/backend_impl.cc:1097: [0829/092957:ERROR:backend_impl.cc(1097)] Critical error found -8
08-29 09:29:58.029: W/chromium(545): external/chromium/net/disk_cache/storage_block-inl.h:119: [0829/092958:WARNING:storage_block-inl.h(119)] Failed data load.
08-29 09:29:58.029: W/chromium(545): external/chromium/net/disk_cache/storage_block-inl.h:119: [0829/092958:WARNING:storage_block-inl.h(119)] Failed data load.
08-29 09:29:58.039: W/chromium(545): external/chromium/net/disk_cache/storage_block-inl.h:119: [0829/092958:WARNING:storage_block-inl.h(119)] Failed data load.
08-29 09:29:58.059: E/chromium(545): external/chromium/net/disk_cache/entry_impl.cc:830: [0829/092958:ERROR:entry_impl.cc(830)] Failed to save user data
08-29 09:30:00.349: E/libEGL(545): call to OpenGL ES API with no current context (logged once per thread)
08-29 09:30:00.360: D/ShaderProgram(545): couldn't load the vertex shader!
08-29 09:30:00.360: E/libEGL(545): call to OpenGL ES API with no current context (logged once per thread)
08-29 09:30:00.360: D/ShaderProgram(545): couldn't load the vertex shader!
08-29 09:30:00.360: E/libEGL(545): call to OpenGL ES API with no current context (logged once per thread)
08-29 09:30:00.360: D/ShaderProgram(545): couldn't load the vertex shader!
08-29 09:30:00.360: E/libEGL(545): call to OpenGL ES API with no current context (logged once per thread)
08-29 09:30:00.360: D/ShaderProgram(545): couldn't load the vertex shader!
08-29 09:30:00.360: E/libEGL(545): call to OpenGL ES API with no current context (logged once per thread)
08-29 09:30:00.360: D/ShaderProgram(545): couldn't load the vertex shader!
If the website has javascript you are missing this line:
webView.getSettings().setJavaScriptEnabled(true);
And if your target is higher than 2.3.3 try adding this in your manifest file.
android:hardwareAccelerated="true"
这篇关于Android的web视图没有正确显示HTML内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!