Android 与H5之间的js交互

Posted 不积跬步-无以至千里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 与H5之间的js交互相关的知识,希望对你有一定的参考价值。

             之前项目做过一些androidhtml5之间js交互方面的东西,今天有时间就总结一下:

     一、为什么要进行js交互:

                 为了方便原生开发和Html之间数据传递,在静态页面的情况下可以改变原生开发的页面;

     二、如何进行js交互:

          (一)Android端调用H5页面

                    在Android端主要使用WebView来进行网页的加载,设置属性

// 获取WebSetting对象
WebSettings webSettings = webview.getSettings();
// 设置支持javascript
webSettings.setJavaScriptEnabled(true);
// 将Android里面定义的类对象AndroidJs暴露给javascript
webview.addJavascriptInterface(new AndroidJs(MainActivity.this), "AndroidJs");

                   

                调用方式:其中doAlert为H5页面的方法

 webview.loadUrl("javascript:doAlert()");

      (二)H5端调用Android页面

                 H5端代码:

<input type="button" value="打招呼" onclick="AndroidJs.showToast()"/>
<input type="button" value="图书列表" onclick="AndroidJs.showList()"/>

                 Android端代码:

public class AndroidJs {
    private Context mContext;

    public AndroidJs(Context context) {
        this.mContext = context;
    }

    @JavascriptInterface
    public void showList() {
        new AlertDialog.Builder(mContext)
                .setTitle("图书列表")
                .setIcon(R.mipmap.ic_launcher)
                .setItems(
                        new String[]{"疯狂java讲义", "疯狂Android讲义",
                                "轻量级java EE开发"}, null)
                .setPositiveButton("确定", null).create().show();
    }

    @JavascriptInterface
    public void showToast() {

        Toast.makeText(mContext, "hello", Toast.LENGTH_LONG).show();
    }

}

      注:AndroidJs是连接Android与Html的桥梁标识,也是一个进行数据交互的类;

      注:这里面的方法必须是共有的,类名与标识保持一致;

 

      以上就是简单的js交互流程,备注的地方要特别注意,请多多指教

 

 

 

 

    

 


以上是关于Android 与H5之间的js交互的主要内容,如果未能解决你的问题,请参考以下文章

js怎么跟Android和ios进行交互呢?

Android WebView与H5交互汇总

Android WebView与H5交互汇总

Android WebView与H5交互汇总

H5 与Native的交互方案

Android WebView与H5交互