webView 拦截js alert转换为原生dialog的方法
2016-10-12 21:40
1066 查看
webView 重写onJsAlert方法只弹出一次的解决方案:
做项目的时候发现,在js中,alert了好几处地方,但是,通过webview的onJsAlert的方法,只弹出了一次.
@Override
public boolean onJsAlert(WebView view, String url, String message,final JsResult result) {
final NoticeDialog dialog = new NoticeDialog(EnjoyWingActivity.this,"",message,"确认");
dialog.show();
dialog.setNoticeListener(new NoticeDialog.NoticeListener() {
@Override
public void doConfirm() {
dialog.dismiss();
}
@Override
public void doCancel() {
dialog.dismiss();
}
});
return true;
}
通过网上查找资料,只需要添加一句话就能解决.添加result.cancel()或result.comfirm()方法.
@Override
public boolean onJsAlert(WebView view, String url, String message,final JsResult result) {
final NoticeDialog dialog = new NoticeDialog(EnjoyWingActivity.this,"",message,"确认");
dialog.show();
dialog.setNoticeListener(new NoticeDialog.NoticeListener() {
@Override
public void doConfirm() {
dialog.dismiss();
/**解决alert只弹出一次的问题*/
result.cancel();
}
@Override
public void doCancel() {
dialog.dismiss();
}
});
return true;
}
根据需求,选择添加的位置,因为我的是一个dialog,点击后消失,这个时候,才会触发result.cancel(),弹出下一个alert.
另外两个的onJsPrompt()和onJsConfirm() 的使用方法类似.
如上就完美的解决了拦截js的原生alert,转化为和app本身风格相一致的弹窗.
做项目的时候发现,在js中,alert了好几处地方,但是,通过webview的onJsAlert的方法,只弹出了一次.
@Override
public boolean onJsAlert(WebView view, String url, String message,final JsResult result) {
final NoticeDialog dialog = new NoticeDialog(EnjoyWingActivity.this,"",message,"确认");
dialog.show();
dialog.setNoticeListener(new NoticeDialog.NoticeListener() {
@Override
public void doConfirm() {
dialog.dismiss();
}
@Override
public void doCancel() {
dialog.dismiss();
}
});
return true;
}
通过网上查找资料,只需要添加一句话就能解决.添加result.cancel()或result.comfirm()方法.
@Override
public boolean onJsAlert(WebView view, String url, String message,final JsResult result) {
final NoticeDialog dialog = new NoticeDialog(EnjoyWingActivity.this,"",message,"确认");
dialog.show();
dialog.setNoticeListener(new NoticeDialog.NoticeListener() {
@Override
public void doConfirm() {
dialog.dismiss();
/**解决alert只弹出一次的问题*/
result.cancel();
}
@Override
public void doCancel() {
dialog.dismiss();
}
});
return true;
}
根据需求,选择添加的位置,因为我的是一个dialog,点击后消失,这个时候,才会触发result.cancel(),弹出下一个alert.
另外两个的onJsPrompt()和onJsConfirm() 的使用方法类似.
如上就完美的解决了拦截js的原生alert,转化为和app本身风格相一致的弹窗.
相关文章推荐
- WebView与原生交互需要重写的方法
- Android使用原生组件WebView加载网页和数据的方法
- Android中WebView点击事件的拦截跳转到原生的界面
- 关于Android原生集成5+webview,监听webview返回时,执行两次onkey方法问题的解决
- webview拦截垃圾电信运营商的广告方法
- <android> webview与h5的交互——上传文件& 调起本地支付接口&响应原生dialog&back键层级返回
- ios js与oc原生WKWebView方法注入及交互传值
- Android使用原生组件WebView加载网页和数据的方法
- webView网页中JS调原生OC方法与JS注入
- WebView原生方法---使用javascript调用android代码
- WebView添加Title使用隐藏函数setEmbeddedTitleBar的方法
- 《转载》Android AlertDialog 方法setView(view,0,0,0,0)的使用
- 在Android的webview中定制js的alert,confirm和prompt对话框的方法
- 关于android WebViewClient 的方法解释
- javaweb中把数字转换成对应图片的方法
- webview加载htmlstring里有工程里的图片解决方法
- android webView 使用方法
- Android AlertDialog 方法setView(view,0,0,0,0)开发自定义对话框
- Android中WebView方法WebViewClient和WebChromeClient的区别
- Asp.net Mvc 未能加载类型“System.Web.Mvc.ViewPage 的解決方法