Android与JS交互

文/HuDP(简书作者)
原文链接:http://www.jianshu.com/p/56043aeadc3d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。


在现在的App当中,我们经常需要在原生界面中插入HTML5页面,需要在两者之间交互,也就是原生代码和HTML5互调方法,一起来了解一下如何实现的吧!

1.原生代码调用HTML5页面方法
例如,app要调用HTML5页面的changeColor(color)的方法,来改变HTML5页面的颜色
1)HTML5

 <script type="text/javascript">   
  document.write("Hello World!")  
  function changeColor(color){  document.body.style.background = color;    } </script>
2)
 wvMain.getSettings().setJavaScriptEnabled(true);   //开启JavaScript支持   
  wvMain.loadUrl("file:///android_asset/show.html");    //放在assets的html需加上     android_asset/ ;也可以用网络上的文件
  // 添加一个对象, 让JS可以访问该对象的方法, 该对象中可以调用JS中的方法
  wvMain.addJavascriptInterface(new JSInterface1(),"baobao"); 
  btnOne.setOnClickListener(new View.OnClickListener() {  
  @Override    
   public void onClick(View v) {       
   String color = "#cccccc";   wvMain.loadUrl("javascript: changeColor('"+color+"')");    }});

---------------分割线---------------


2.HTLM5页面调用原生方法
例如,点击HTML5页面的文字,回调原生代码中的callAndroidMethod方法
1)HTML5
   <a onClick="baobao.callAndroidMethod(100,100,'ccc',true)">CallAndroidMethod</a>

2) Android

   class JSInterface1 {    

    //JavaScript调用此方法
   @JavascriptInterface     

   public void callAndroidMethod(int a,float b, String c,boolean d){
    if(d){           
        String strMessage = "a+b+c="+a+b+c;       
      new AlertDialog.Builder(MainActivity.this).setTitle("title").setMessage(strMessage).show();        
         }  
     }
  }
   

到此简单的Android与HTML5代码间的互调就完成了

<在某些场景,Java调用js,如果js没有加载完成,就会掉用不成功,有对应的js加载完成的监听方法>


文/HuDP(简书作者)
原文链接:http://www.jianshu.com/p/56043aeadc3d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

PS:  为了提高安全性在17以上版本中js只能调用有 @JavascriptInterface 注解的方法
关于android与JS交互17以下版本的安全性问题参考:http://blog.csdn.net/qq_31715429/article/details/50972559
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值