andorid和js 交互

╄→гoц情女王★ 提交于 2019-12-05 11:12:39

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方式(由外向里)。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!