1.
JS调用android |
对象映射 | Java映射代码
public class MainActivity extends Activity{
XWalkView xWalkView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
XWalkPreferences.setValue("enable-javascript", true);
xWalkView = findViewById(R.id.web);
xWalkView.addJavascriptInterface(this, "android");
xWalkView.loadUrl("file:///android_asset/index.html");
}
@org.xwalk.core.JavascriptInterface
public void test(String JSResult) {
Log.e("JavascriptHandler", "html content:" + JSResult);
}
}
JS中可以直接使用
android.test("这是在JS中调用函数");
| 回调拦截 url | | 回调拦截JS对话框 | 1. JS中执行代码
promptResult = prompt("js://serverAddr?currServerAddr=调用clickprompt&arg2=222", "这是传入android的默认参数");
2. android中的处理过程 如: https://www.cnblogs.com/liuyj-vv/p/9662047.html 中的prompt监听 注:使用中android中未执行 result.confirmWithResult(); 时,JS中的定时器将停止工作。 |
|
android中 执行JS |
loadUrl() |
xWalkView.loadUrl("javascript:document.getElementsByTagName(\"body\")[0].innerHTML=\"android中改变了H5\"");
直接在android中执行JS代码后,页面仅仅显示 “android中改变了H5” | evaluateJavascript() | JS代码
function testCalls()
{
return "JS中返回的字符串"
}
android代码
xWalkView.evaluateJavascript("javascript:testCalls();", new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
Log.e("evaluateJavascript", s);
}
});
查看结果:logcat -c && logcat *:E ![](https://img2018.cnblogs.com/blog/799620/201809/799620-20180919134419369-1704203631.png) |
|
转载于:https://www.cnblogs.com/liuyj-vv/p/9674050.html