1、android向调用html js
public void invokeJs(String jsName, String para) { String jsString = "javascript:" + jsName + "('" + para + "')"; wuyeIntro.loadUrl(jsString); } |
android 调用页面的js
2、html向android 壳发送消息
wuyeIntro.addJavascriptInterface(new Object() { public void checkVersion() { }; }, "updateform"); |
android 向html中注入一段js代码,html通过调用该js实现向android壳发送消息。Window.updateform.checkVersion();
3、android 不能注入js问题
上面提到的第二种通信方式,在sdk 19以上的版本可能就不能使用了,官方解释为可能存在一些安全泄露的问题,所以在高本上不支持这种方式调用。
解决方法有两种:
1)设置 android:targetSdkVersion版本小于19,
2)当html需要调用android壳时通过设置一些超链接设置某些规则,壳解析到这种规则后做对应的处理。
3)根据当前系统的版本决定使用方式,在19以上android增加了另外的调用方式:
evaluateJavascript的方式与html进行交互,更方便,且更容易获取js的返回值
view.evaluateJavascript(jsString, new ValueCallback<String>() { @Override public void onReceiveValue(String value) { // TODO Auto-generated method stub Log.d("zaokun", "InJavaScriptLocalObj ==value========="+value); } }); |