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中的代码要统一,不然不会生效

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript">
      function showOnclick() {
       jsAlias.receiveByJs("测试数据1",2);
     }

    </script>
</head>
<body>
<h1>Js调用原生代码</h1>
<p onclick="showOnclick()">点击事件</p>
</body>
</html>

了解以上三步后,就可以实现在JS中去调用Android原生代码了,在代码里我已经注释了很多,可以看看。但是里面有一些规则,最好自己写一个例子去理解,这样会更加深刻。

如果有错的或者说的不准确的地方,请联系我,及时改正,谢谢大家

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 课程介绍Android开发所需要的比较全面的基础知识,原理。这样在随后的课程里或阅读开源的App时能读懂代码。2. 课时的编排使用Google官方的Android Developer CN的分类,删减了对jetpack(Androidx)的相关课题。因为jetpack并不是核心库,国内大部分App都不会使用它。3. 使用Java作为项目例子代码,要学习Android开发,首先得会Java语言,因为Android API的核心代码是用Java编写的,也可以使用Koltin语言,但是当阅读Android源码时会Java语言是绕不过去的。Java代码可以通过Android Studio的菜单 Code - Convert Java File To Kotlin File来转换为Koltin. 4. 主要介绍Android的核心组件,类库. 但是不会详细介绍jetpack的库,因为这个库使用koltin,而且对AS有强依赖,比如升级了AS不得不升级jetpack(androidx)。或者对于低版本的androidx,新版AS干脆不支持;还有就是依赖GMS核心的都不准备讲,只介绍开源的第三方项目,可以发布到华为,小米等国内Android系统的类库。5. 这里只是介绍Android原生开发,不介绍Flutter,React Native,Hipppy等跨平台框架。选择原生框架的好处就是可以使用系统平台最新的特性,最高的性能,最少的学习成本。当然这些跨平台框架访问系统的一些独有功能还是得通过桥接原生框架调用。Flutter得要学会Dart,Java语言,并且学会它的框架体系API. React Native和Hippy这些H5框架通过JavaScript访问原生功能的框架也得学会JavaScript,还要会Vue,React框架,之后就是Html,Css布局。 这些还需要下载安装开发额外的开发环境。当然它的好处是跨Android,iOS两个平台。童鞋根据自己的项目要求进行取舍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值