本篇文章主要介绍了"Android WebView 踩过的坑",主要涉及到方面的内容,对于Javascriptjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
首先wenview大家都知道的一些API WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度...
首先wenview大家都知道的一些API


WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 :
onCloseWindow(关闭WebView)onCreateWindow()onJsAlert(WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出)onJsPromptonJsConfirmonProgressChangedonReceivedIcononReceivedTitle
- WebView 文件上传,直接看代码:
webView.setWebChromeClient(new MyWebChromeClient());
private ValueCallback mUploadCallbackAboveL;
private ValueCallback mUploadMessage;
privateclassMyWebChromeClientextendsWebChromeClient {// For Android 3.0+publicvoidopenFileChooser(ValueCallback uploadMsg, String acceptType) {
if (mUploadMessage != null) return;
mUploadMessage = uploadMsg;
showPhotoView();
}
// For Android < 3.0publicvoidopenFileChooser(ValueCallback uploadMsg) {
openFileChooser(uploadMsg, "");
}
// For Android > 4.1.1publicvoidopenFileChooser(ValueCallback uploadMsg, String acceptType, String capture) {
openFileChooser(uploadMsg, acceptType);
}
// For Android 5.0+publicbooleanonShowFileChooser (WebView webView, ValueCallback filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
if (mUploadCallbackAboveL != null){
returnfalse;
}
mUploadCallbackAboveL = filePathCallback;
showPhotoView();
returntrue;
}
}
/**
* 自定义的文件选择框,包括相机 图库
*/privatevoidshowPhotoView() {
photoSelectFragment = new PhotoSelectFragment();
photoSelectFragment.setOnPhotoListItemClickListener(this);
photoSelectFragment.setOnDismissListener(this);
photoSelectFragment.show(getSupportFragmentManager(),
"photoSelectFragment");
}
当文件选择的dialog消失时或者取消时要调用以下代码,否则就会出现再次点击不再弹出选择dialog:
/**
* 重置 mUploadMessage
*/privatevoidclearUploadCallBack(){
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {//5.0以下if (mUploadMessage != null){
mUploadMessage.onReceiveValue(null);
mUploadMessage = null;
}
}else {
if(mUploadCallbackAboveL != null){
mUploadCallbackAboveL.onReceiveValue(null);
mUploadCallbackAboveL = null;
}
}
}
2.WebView 图片延迟加载:
有些页面如果包含网络图片,在移动设备上我们等待加载图片的时间可能会很长,所以我们需要让图片延时加载,这样不影响我们加载页面的速度,同样代码说话:
定义变量:
boolean blockLoadingNetworkImage=false;
在WebView初始化的时候设置,就是这么简单就可以了: