webview与js交互2
来源:互联网 发布:js字符串转换成日期 编辑:程序博客网 时间:2024/05/02 07:47
1、上篇说到了webview与js交互的一种方法,通过addJavascriptInterface暴露java方法给js调用。但是也说到了,这个方法在低版本的系统有安全漏洞。现在介绍另一个安全的方法。其实也是用到了webview,自定义webclient。具体是实现webchromeclient.
public class MyWebChromeClient extends WebChromeClient { private final String TAG = "MyWebChromeClient"; @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) { Log.i(TAG,"message:"+message + " defaultValue:"+defaultValue); result.confirm(message); return true;// return super.onJsPrompt(view, url, message, defaultValue, result); }}
onJsPrompt方法是在JavaScript中prompt方法被调用的时候,webchromeclient中会回调该方法。我们可以通过参数message,defaultvalue来进行相关判断,执行相关java方法。这两个参数分别对应了JavaScript方法中的prompt方法中的两个参数。接收到参数之后,通过result.confirm(message)方法把message作为返回值返回给JavaScript。
看看html文件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"><HTML><HEAD><meta name="viewport" content="width=device-width, target-densitydpi=device-dpi" /><META http-equiv="Content-Type/Refresh" content="text/html/10; charset=UTF-8" ><script> function showMsg(){ alert("hello world!"); } function showMsgInAndroid(x){ var ret = prompt(x,"param"); console.log("js返回值:"+ret) var x=document.getElementById("text"); x.innerHTML=ret; }</script></HEAD><BODY><span>测试js使用</span><button id='btntest' onclick='showMsgInAndroid("fun1")'>调用方法1</button><button id='btnsay' onclick='showMsgInAndroid("fun2")'>调用方法2</button><p id="text">显示结果</p></BODY></HTML>
在上面html文件中,在function中,把showMsgInAndroid()中的参数作为prompt方法中的参数一传给WebChromeClient中的onJsPrompt方法。并把java中返回的值ret设置为元素p的内容。
最后附上demo链接:
链接:http://pan.baidu.com/s/1mhSxFWc 密码:wq4e
0 0
- webview与js交互2
- WebView与js交互(2)
- webview与js交互
- webview与js交互
- webview与js交互
- webview与js交互
- webview与js交互
- webview与js交互
- WebView与JS交互
- webView与js交互
- webView与js交互
- webview与js交互
- webview与js交互
- webview与js交互
- webview与js交互
- WebView与JS交互
- webview与js交互
- Webview 与JS 交互
- 操符和表达式
- redis使用乐观锁时处理竞争问题,高并发时失败率高如何解决
- Android设置手势密码
- Linux常用命令大全
- 深入理解Java:注解(Annotation)自定义注解入门
- webview与js交互2
- eclipse+springmvc+maven+tomcat总是报类找不到
- Volley使用方法(三):自定义Request请求
- React爬坑之路(一)
- 批量建立用户+SSH自动登录+DDNS服务配置脚本
- kafka-python-client-example
- Using Padding in Encryption
- oracle修改字符集
- 语句