WebView通过URL加载H5界面出现空白的原因与解决办法

1.权限问题:在配置文件中需要设置网络权限

<uses-permission android:name=“android.permission.INTERNET” />

2.基本配置问题

WebSettings webSettings = webView.getSettings();
//支持缩放,默认为
true。 .setUseWideViewPort(
true);
// 缩放至屏幕的大小 webSettings .setLoadWithOverviewMode(
true);
//设置默认编码 webSettings .setDefaultTextEncodingName(
“utf-8”);
//
//设置自动加载图片 webSettings .setLoadsImagesAutomatically(
true); .settings.setJavaScriptEnabled(true);// 设置可以运行JS脚本

.settings.setSupportZoom(false);// 用于设置webview放大

.settings.setBuiltInZoomControls(false);   3.出现
Uncaught TypeError: Cannot call method ‘getItem’ of null异常 这个行出现了异常,这个正是html5的特性,一个本地存储的东西,存储量比cookie大,但是这个必须在android的webview用代码启动才行

解决方法:启动webview的html5的本地存储功能。webview.getSettings().setDomStorageEnabled(true);     webview.getSettings().setAppCacheMaxSize(1024*1024*8);    String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();    webview.getSettings().setAppCachePath(appCachePath);    webview.getSettings().setAllowFileAccess(true);    webview.getSettings().setAppCacheEnabled(true);

4.调用getDeviceID 方法的时候,js没有加载完毕,导致出现空白

解决办法:

webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//在这里执行你想调用的js函数
if(!flag_get_deviceid){
load();
}
}

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}

});

private boolean flag_get_deviceid=false;

public void load(){

String key=””;

String androidID=””;

try{

androidID = Secure.getString(getContentResolver(),Secure.ANDROID_ID);

Log.d(TAG, “androidID:”+androidID);}catch(Exception e){

Log.e(TAG, “”);

}finally{

String script=String.format(“javascript:getDeviceID(‘”+androidID+”‘)”);

webActDetail.evaluateJavascript(script, new ValueCallback<String>() {

@Override
public void onReceiveValue(String value) {
Log.d(TAG, “onReceiveValue value=” + value);

if(value!=null){
flag_get_deviceid=true;
}
}});
}
}

5.android手机版本问题,现在H5界面实现多样化,导致很多H5界面在低版本的机型上无法展示或者样式错乱

解决办法:一种是重新设计低版本的h5界面,另一种设置项目最低版本

    原文作者:sx638
    原文地址: https://blog.csdn.net/sx638/article/details/79608804
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞