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

本地的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 + "')");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值