WebView的使用,android与JS混编

WebView调用JS
一般用得到的就是WebView.load(String url) 。
如果需要支持JS。需要调用如下代码:

  WebSettings seting = webView.getSettings();
   seting.setJavaScriptEnabled(true);

          //下行的代码中红色的方法为js的函数
        webView.evaluateJavascript("createRoundRect(ctx,30,30,200,100,20)", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                //如果调用的JS的方法有返回值, 就在value里面,目前只支持String类型
                Log.i("LOGOTAG>>>>>>",value);
            }
        });

如果网页中有Alter无法弹出:
 webView.setWebChromeClient(new WebChromeClient(){});



JS中调用android代码
     首先看Android代码:
     先定义一个类,用来封装给JS调用的方法

public class JavaInterFace{
    public  Context context;
    public  JavaInterFace(Context context){
        this.context=context;
    }
     //这里必须加上这个注解,声明为JS接口,不然不可调用
    @JavascriptInterface
    public void show(String o){
        Toast.makeText(context, "APP上得到JS中的数字:"+o , Toast.LENGTH_LONG).show();
    }
}

然后绑定webView:
webView.addJavascriptInterface(new JavaInterFace(MainActivity.this), "Android");


JS中的代码:
          <input type="button" value="调用Android代码" onClick="showToast('Hello_Word')" />
                    <script type="text/javascript">
                    function showToast(toast){
                         Android.show(toast);         
                    }
          </script>




处理页面导航:
当用户点击WebView中的一个链接的时候,默认是让Android启动一个可以处理URL的应用(就是打开手机自带浏览器),如果你想让WebView中加载显示:
那么只要为WebView提供一个WebViewClient即可。
webView.setWebViewClient(new WebViewClient);

这样,所有用户单击的链接会在webview中加载了

如果想要对于URL的加载有更严格的控制,重写WebViewClient,覆盖shouldOverrideUrlLoading()方法:


WebView的使用,android与JS混编_第1张图片


历史记录导航
当Webview覆盖了URL加载之后,会生成历史访问记录,可以通过goBack()或者goForward()向后像前访问已访问过的站点
实现方法:

WebView的使用,android与JS混编_第2张图片

你可能感兴趣的:(webView,js调用android,安卓调用Js,JS与安卓混编)