Android开发中JS调用原生代码

今天遇到一个需求,项目中原来的原生界面要改为H5,但是这个这个界面中的某些点击事件还是要在原生代码里去处理,这就需要我们在JS中调用Android原生代码,正好趁着今天做了这个需求,写个简单的例子,把这个问题总结一下:
第一步:显示WebView

private JavaScriptUtil mJavaScriptUtil; //Js调用原生的工具类,为了以后书写方便,可以将项目中所有调原生的方法都写在一起当然这里我们只举一个例子WebView webView = findViewById(R.id.web_view); webView.getSettings().setJavaScriptEnabled(true); //支持Js mJavaScriptUtil = new JavaScriptUtil(WebViewActivity.this); //只是为了将当前Activity的上下文环境,传入工具类,为了在工具类中启动一个Activity(当然这个根据实际情况去加) webView.addJavascriptInterface(mJavaScriptUtil, "jsAlias"); //这个是上面工具类对象的实例第二个是在js中调用的别名,这个需要和前端人员商定 // webView.loadUrl("https://www.baidu.com/"); webView.loadUrl("file:///android_asset/webview.html"); //加载本地html文件

第二步:JavaScriptUtil工具类
public class JavaScriptUtil {private Context mContext; public JavaScriptUtil(Context mContext) { this.mContext = mContext; }@JavascriptInterface public void receiveByJs(String text, int count) {//receiveByJs 这个方法是接收来自H5的点击事件,同样方法名是自定义,但是要和前端商定 Toast.makeText(mContext, count + text + "", Toast.LENGTH_SHORT).show(); //这一句,就是测试从H5页面带来的数据 mContext.startActivity(new Intent(mContext, MainActivity.class)); //Activity跳转 }

第三步:本地html文件,里面代码很简单,其中要注意jsAlias.receiveByJs(“测试数据1”,2)中的jsAlias和receiveByJs都是我们在Android原生代码中自定义的,使用时Android的代码和html中的代码要统一,不然不会生效
Insert title here - 锐客网 Js调用原生代码点击事件

了解以上三步后,就可以实现在JS中去调用Android原生代码了,在代码里我已经注释了很多,可以看看。但是里面有一些规则,最好自己写一个例子去理解,这样会更加深刻。
【Android开发中JS调用原生代码】如果有错的或者说的不准确的地方,请联系我,及时改正,谢谢大家

    推荐阅读