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 相关文章推荐
JavaScript 页面坐标相关知识整理
Jan 09 Javascript
可以浮动某个物体的jquery控件用法实例
Jul 24 Javascript
JavaScript获取各大浏览器信息图示
Nov 20 Javascript
简单的js表格操作
Sep 24 Javascript
使用yeoman构建angular应用的方法
Aug 14 Javascript
Node.js实现连接mysql数据库功能示例
Sep 15 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
Oct 19 Javascript
Vue组件全局注册实现警告框的实例详解
Jun 11 Javascript
element ui table(表格)实现点击一行展开功能
Dec 04 Javascript
javascript实现简易聊天室
Jul 12 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
Jul 27 Javascript
vue中使用echarts的示例
Jan 03 Vue.js
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
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
php不使用插件导出excel的简单方法
2014/03/04 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
php实现的操作excel类详解
2016/01/15 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
PyQt5实现拖放功能
2018/04/25 Python
python实现字符串和字典的转换
2018/09/29 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
python三大神器之fabric使用教程
2019/06/10 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
表扬信格式
2014/01/12 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
奥林匹克的口号
2014/06/13 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
大学军训心得体会800字
2016/01/11 职场文书