android与js的交互问题

原创,如需转载请标明出处。

一:本地html的加载问题

正常情况:

在app目录下的src文件夹下的main文件夹下创建assets文件夹,在assets文件夹下创建test.html。(assets应该与res文件夹同级别)

加载本地html方式:

webview.loadUrl("file:///android_asset/test.html");

如果:

如果创建的test.html是没有后缀名的,那么加载html应该这样:

webview.loadUrl("file:///android_asset/test");

二:一些注意事项

  1. webView.getSettings().setJavaScriptEnabled(true);

//启用JavaScript与android的交互。

  1. webView.addJavascriptInterface(new Contact(),"contact");

//添加JavaScript接口

@JavascriptInterface//必须标明否则访问不了

三:android与js交互的爬坑之旅

  1. android操作js,操作不了。

解决方案:

  1. setJavaScriptCanOpenWindowsAutomatically(true);设置js可弹窗

    runOnUiThread(new Runnable() {
             @Override
             public void run() {
                 webView.loadUrl("javascript:jsText('"+text+"')");
             }
         });

注:不能使用handler来发送post请求去调用js代码。(应该在同一线程)

  1. /**

    添加JavaScriptInterface
      * 
      * 第一个参数:与js映射的java对象
      * 第二个参数:该java被映射为js对象之后在js中的对象名,再js中要调用该对象的方法就通过这个来调用
      */
    webView.addJavascriptInterface(**new JsInterface(),"jsi"**);

如果js里边需要alert弹窗,那么java里边需要设置mWebView.setWebChromeClient(new WebChromeClient() { }

// 由于设置了弹窗检验调用结果,所以需要支持js对话框
   
// webview只是载体,内容的渲染需要使用webviewChromClient类去实现
   
// 通过设置WebChromeClient对象处理JavaScript的对话框
   
//设置响应js 的Alert()函数

特别注意:JS代码调用一定要在 onPageFinished() 回调之后才能调用,否则不会调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值