Webview中js与本地java代码的互相调用

来源:互联网 发布:网络播放器怎么看电视 编辑:程序博客网 时间:2024/05/02 04:28

本地的Html文件保存位置

在main目录下,右键new Directory>>命名为assets(注意要加s)将本地的html文件保存到文件夹下保存到其中的txt文件使用如下方法打开InputStream open = getAssets().open("sample.txt");

加载本地的网页

    private void loadNativeWebHtml() {        webView = (WebView) findViewById(R.id.webView);        webView.setVerticalScrollbarOverlay(true);        //开启js        webView.getSettings().setJavaScriptEnabled(true);        //使用loadurl网页加载本地网页,注意下面这个asset中不加s         webView.loadUrl("file:///android_asset/web.html");        //添加客户端支持        webView.setWebChromeClient(new WebChromeClient());    }

JS和java的互相调用

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Android WebView 与 Javascript 交互</title></head><body><input type="button" value="分享" onclick="f1()"><input type="text" id="show"/></body><script>function f1(){    //在这里调用java中的代码,使用吐司提示输入框中的内容         AndroidWebView.showInfoFromJs(document.getElementById("show").value);      }    //这个js方法被java代码调用        function showInfoFromJava(msg){        document.getElementById("show").value=msg;        alert(msg);      }</script></html>
在js中调用java代码    private class JsInterface {        private Context mContext;        public JsInterface(Context context) {            this.mContext = context;        }        //在该类中创建一个js中的同名方法,使用注解标注该方法否则在4.3版本后会报错            //在js中调用window.AndroidWebView.showInfoFromJs(name),便会触发此方法。        @JavascriptInterface        public void showInfoFromJs(String name) {            Toast.makeText(mContext, name, Toast.LENGTH_SHORT).show();        }    }js中:function f1(){   AndroidWebView.showInfoFromJs(document.getElementById("show").value);}
    //在java中调用js代码    public void sendInfoToJs(View view) {        String msg = ((EditText) findViewById(R.id.input_et)).getText().toString();        //webview.loadUrl("javascript:方法名('"+参数+"')");,记得加转义字符        webView.loadUrl("javascript:showInfoFromJava('" + msg + "')");    }
原创粉丝点击