crosswalk---android和JS互相调用

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://www.cnblogs.com/liuyj-vv/p/9674050.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值