解决Android的Webview加载页面空白问题
程序员文章站
2022-06-04 15:01:25
...
通过webview加载百度地图开发的h5页面时,出现了页面空白的问题。
出现这问题通过下面两个设置能解决大部分的问题。
mWebSettings.setJavaScriptEnabled(true);//是否允许JavaScript脚本运行,默认为false
mWebSettings.setDomStorageEnabled(true);//开启本地DOM存储
如果还不能解决的话通过下面的设置,找到所需要的进行设置。不行的话就全部复制过去。
mWebSettings = mWebview.getSettings();
mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);//设置js可以直接打开窗口,如window.open(),默认为false
mWebSettings.setJavaScriptEnabled(true);//是否允许JavaScript脚本运行,默认为false。设置true时,会提醒可能造成XSS漏洞
mWebSettings.setSupportZoom(true);//是否可以缩放,默认true
mWebSettings.setBuiltInZoomControls(true);//是否显示缩放按钮,默认false
mWebSettings.setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式
mWebSettings.setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题
mWebSettings.setAppCacheEnabled(true);//是否使用缓存
mWebSettings.setDomStorageEnabled(true);//开启本地DOM存储
mWebSettings.setLoadsImagesAutomatically(true); // 加载图片
mWebSettings.setMediaPlaybackRequiresUserGesture(false);//播放音频,多媒体需要用户手动?设置为false为可自动播放
下面是完整的Android使用webview的代码。
public class MainActivity extends AppCompatActivity {
WebView mWebview;
WebSettings mWebSettings;
TextView beginLoading,endLoading,loading,mtitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//取消状态栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
mWebview = (WebView) findViewById(R.id.webView1);
mWebSettings = mWebview.getSettings();
mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);//设置js可以直接打开窗口,如window.open(),默认为false
mWebSettings.setJavaScriptEnabled(true);//是否允许JavaScript脚本运行,默认为false。设置true时,会提醒可能造成XSS漏洞
mWebSettings.setSupportZoom(true);//是否可以缩放,默认true
mWebSettings.setBuiltInZoomControls(true);//是否显示缩放按钮,默认false
mWebSettings.setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式
mWebSettings.setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题
mWebSettings.setAppCacheEnabled(true);//是否使用缓存
mWebSettings.setDomStorageEnabled(true);//开启本地DOM存储
mWebSettings.setLoadsImagesAutomatically(true); // 加载图片
mWebSettings.setMediaPlaybackRequiresUserGesture(false);//播放音频,多媒体需要用户手动?设置为false为可自动播放
mWebview.loadUrl("http://10.11.11.137:8080/smart-airport/car/index.html");
//设置不用系统浏览器打开,直接显示在当前Webview
mWebview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
}
//点击返回上一页面而不是退出浏览器
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && mWebview.canGoBack()) {
mWebview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
//销毁Webview
@Override
protected void onDestroy() {
if (mWebview != null) {
mWebview.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
mWebview.clearHistory();
((ViewGroup) mWebview.getParent()).removeView(mWebview);
mWebview.destroy();
mWebview = null;
}
super.onDestroy();
}
}
<!--显示网页区域-->
<WebView
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="0dp" />
只需要把 mWebview.loadUrl("http://10.11.11.137:8080/smart-airport/car/index.html");
中的网址改成自己的就可以了。
上一篇: 利用iOS原生框架实现蓝牙4.0通讯功能
下一篇: ROS学习——移动机器人导航仿真(二)
推荐阅读
-
Android webview旋转屏幕导致页面重新加载问题解决办法
-
Android编程中聊天页面背景图片、标题栏由于键盘引起问题的解决方法
-
Android关于WebView中无法定位的问题解决
-
解决vue 打包发布去#和页面空白的问题
-
回到顶部按钮页面加载时会闪烁问题的解决办法
-
vue页面加载闪烁问题的解决方法
-
解决用jquery load加载页面到div时,不执行页面js的问题
-
解决Android webview设置cookie和cookie丢失的问题
-
Android webview加载https链接错误或无响应的解决
-
Android Webview的postUrl与loadUrl加载页面实例