andorid和js 交互

html文件

 <a>js中调用本地方法</a>  

    <script>  

    function fromjs(){  

        document.getElementById("show").innerHTML="I am from js";  

    }  

    var aTag = document.getElementsByTagName('a');

    aTag.addEventListener('click', function(){  

        //调用android本地方法  

       myJsObj.fromAndroid("android本地方法fromAndroid(String str)");  

        return false;  

    }, false);  

    </script>  

   <div id="show">   </div> 

Android 中的java文件

     //设置编码  

       mWebView.getSettings().setDefaultTextEncodingName("utf-8");  

       //支持js  

       mWebView.getSettings().setJavaScriptEnabled(true);  

       //设置背景颜色 透明  

       mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0));  

       //设置本地调用对象及其接口  

       mWebView.addJavascriptInterface(new JsObject(context), "myJsObj");  

       //载入js  

       mWebView.loadUrl("file:///android_asset/xxx.html");  

       //点击调用js中方法  

       mBtn.setOnClickListener(new View.OnClickListener() {  

           @Override  

           public void onClick(View v) {  

              mWebView.loadUrl("javascript:fromjs()");  

               Toast.makeText(context,"调用javascript:fromjs()", Toast.LENGTH_LONG).show();  

           }  

       });  


public class JsObject {  

    Context mContext;  

    @JavascriptInterface //Android 4.2JS调用Java代码的时候必须加上@JavascriptInterface才能调用。

    public JavaScriptObject(Context mContxt) {  

        this.mContxt = mContxt;  

    }  

    public void fromAndroid(String str) {  

        Toast.makeText(mContext, str, Toast.LENGTH_LONG).show();  

    }  

    

}  

注: addEventListener中的第一个参数是事件名称(不加on),第二个参数是调用方法,第三个参 数是useCapture, 一个bool类型。当为false时为冒泡获取(由里向外),true为capture方式(由外向里)。

你可能感兴趣的:(js,交互)