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 相关文章推荐
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
May 07 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
Aug 10 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
Nov 19 Javascript
第六章之辅组类与响应式工具
Apr 25 Javascript
深入学习 JavaScript中的函数调用
Mar 23 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
Sep 13 Javascript
详解10分钟学会vue滚动行为
Sep 21 Javascript
vue2.0 根据状态值进行样式的改变展示方法
Mar 13 Javascript
vue 之 .sync 修饰符示例详解
Apr 21 Javascript
解决vue-cli3 使用子目录部署问题
Jul 19 Javascript
vue 项目地址去掉 #的方法
Oct 20 Javascript
使用js在layui中实现上传图片压缩
Jun 18 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
php实现singleton()单例模式实例
2014/11/06 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
php获取flash尺寸详细数据的方法
2016/11/12 PHP
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
Python 多线程抓取图片效率对比
2016/02/27 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
Python爬虫使用脚本登录Github并查看信息
2018/07/16 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
如何解决python多种版本冲突问题
2020/10/13 Python
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
急诊科护士自我鉴定
2013/10/14 职场文书
技术学校毕业生求职信分享
2013/12/02 职场文书
网上卖盒饭创业计划书范文
2014/02/07 职场文书
离婚纠纷代理词
2015/05/23 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
采购员工作总结范文
2015/08/12 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书
Android开发之底部导航栏的快速实现
2022/04/28 Java/Android
vue实现在data里引入相对路径
2022/06/05 Vue.js