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 相关文章推荐
飞鱼(shqlsl) javascript作品集
Dec 16 Javascript
JavaScript控制Session操作方法
Jan 17 Javascript
jquery插件开发注意事项小结
Jun 04 Javascript
手机平板等移动端适配跳转URL的js代码
Jan 25 Javascript
jQuery实现的多选框多级联动插件
May 02 Javascript
JS中with的替代方法与String中的正则方法详解
Dec 23 Javascript
原生js实现瀑布流布局
Mar 08 Javascript
基于Bootstrap分页的实例讲解(必看篇)
Jul 04 Javascript
jquery对table做排序操作的实例演示
Aug 10 jQuery
微信小程序滚动Tab实现左右可滑动切换
Aug 17 Javascript
Vue.js点击切换按钮改变内容的实例讲解
Aug 22 Javascript
Vue实现导航栏菜单
Aug 19 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在Apache下的两种模式的安装
2006/09/05 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
详解php反序列化
2020/06/10 PHP
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
javascript 浏览器检测代码精简版
2010/03/04 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
实例介绍JavaScript中多种组合继承
2019/01/20 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
八大排序算法的Python实现
2021/01/28 Python
Python 搭建Web站点之Web服务器网关接口
2016/11/06 Python
彻底理解Python list切片原理
2017/10/27 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
python selenium 获取接口数据的实现
2020/12/07 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
企业党员个人自我评价
2014/09/20 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
nginx部署多前端项目的几种方法
2021/05/25 Servers
Python中的套接字编程是什么?
2021/06/21 Python
MySQL的安装与配置详细教程
2021/06/26 MySQL