React-native桥接Android原生开发详解


Posted in Javascript onJanuary 17, 2018

在开发RN的漫漫长河中,早晚有那么一天要接触到安卓的原生开发,笔者来介绍一下其中的酸甜苦辣.对于一个不懂android的小白来说,刚开始有点难,不过都是万事开头难.语言是想通的,原理也是大径若一.

React-native桥接Android原生开发详解

开发过程中是要集成高德的导航功能,没有找到好的轮子的,只要写原生代码,然后在用JS去调用原生的导航模块.

首先注册模块

其意义在与将类注册到RN中,才能用JS去调用

public class AnExampleReactPackage implements ReactPackage {
  @Override
  public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
    return Collections.emptyList();
  }
  @Override
  public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
    List<NativeModule> modules = new ArrayList<>();

    modules.add(new NaviActivity(reactContext));
    return modules;
  }
}

其中modules.add(new NaviActivity(reactContext));意义就是添加一个安卓原生的activity模块

这个模块可以定义方案,RN可以直接调用(方法上必须声明了@ReactMethod才可以)

@ReactMethod
  public void showFengMap(String mapID){
    Activity currentActivity = getCurrentActivity();
    Intent intent = new Intent(currentActivity, 页面名.class);
    currentActivity.startActivity(intent);
  }

笔者其中的到吗是跳转到其他页面,这里也可以做一些其他的操作.例如直接去分享

声明

在安卓程序的app内的MainApplication内,

@Override
  protected List<ReactPackage> getPackages() {
   return Arrays.<ReactPackage>asList(
     new MainReactPackage(),
      new AnExampleReactPackage()
   );
  }

加入刚刚注册过的包名

JS调用原生代码

import { NativeModules } from 'react-native';

export default NativeModules.NaviActivity;

笔者这里写了一个untils/CommonAndroidUntils.js,在需要用的页面直接引入这个js文件

CommonAndroidUntils.show();

实现跳转.

集成高德导航

对于一个小白直接去在android studio内集成高德地图刚开始还是有点难度的.不过理解之后感觉还好.简单些一下遇到的问题,提醒自己,帮助他人

直接拖入的.jar语音包不能引入

解决办法是右键.jar包,有将.jar引入的选项点击,等待同步即可.

其余的都是些小问题,根据demo以及文档轻松解决的不值一提了.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery作者John Resig自己封装的javascript 常用函数
Nov 09 Javascript
小试JQuery的AutoComplete插件
May 04 Javascript
Jquery实现图片左右自动滚动示例
Sep 25 Javascript
javascript实现颜色渐变的方法
Oct 30 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
Jan 26 Javascript
深入理解Javascript中this的作用域
Aug 12 Javascript
详解js前端代码异常监控
Jan 11 Javascript
js+html5实现半透明遮罩层弹框效果
Aug 24 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
Jul 17 jQuery
微信小程序 页面跳转传值实现代码
Jul 27 Javascript
vue-cli项目无法用本机IP访问的解决方法
Sep 20 Javascript
Javascript 模拟mvc实现点餐程序案例详解
Dec 24 Javascript
vue自定义指令directive实例详解
Jan 17 #Javascript
移动web开发之touch事件实例详解
Jan 17 #Javascript
详解layui弹窗父子窗口之间传参数的方法
Jan 16 #Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
Jan 16 #Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
Jan 16 #Javascript
AngularJS监听ng-repeat渲染完成的两种方法
Jan 16 #Javascript
微信小程序实现流程进度的图样式功能
Jan 16 #Javascript
You might like
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
PHP访问Google Search API的方法
2015/03/05 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
js 方法实现返回多个数据的代码
2009/04/30 Javascript
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
2013/04/09 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
Vue响应式原理详解
2017/04/18 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
JavaScript工具库MyTools详解
2020/01/01 Javascript
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
结构和类有什么异同
2012/07/16 面试题
腾讯公司的一个sql题
2013/01/22 面试题
高中军训感言600字
2014/03/11 职场文书
远程培训的心得体会
2014/09/01 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android