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 相关文章推荐
HTML中事件触发列表与解说
Jul 09 Javascript
javascript 自动转到命名锚记
Jan 10 Javascript
使用js画图之正弦曲线
Jan 12 Javascript
基于jQuery实现淡入淡出效果轮播图
Jul 31 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
vue-cli单页应用改成多页应用配置详解
Jul 14 Javascript
javaScript封装的各种写法
Aug 14 Javascript
JavaScript实现计数器基础方法
Oct 10 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
Dec 31 Javascript
JS中的BOM应用
Feb 02 Javascript
Vue源码探究之状态初始化
Nov 14 Javascript
React Ant Design树形表格的复杂增删改操作
Nov 02 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 文件夹删除、php清除缓存程序
2009/08/25 PHP
PHP正确解析UTF-8字符串技巧应用
2012/11/07 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
AJAX架构之Dojo篇
2007/04/10 Javascript
基于jQuery的动态表格插件
2011/03/28 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
Seajs的学习笔记
2014/03/04 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
最全的Javascript编码规范(推荐)
2016/06/22 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
python executemany的使用及注意事项
2017/03/13 Python
Python 查看文件的编码格式方法
2017/12/21 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
python3转换code128条形码的方法
2019/04/17 Python
Python 元组操作总结
2019/09/18 Python
Python @property原理解析和用法实例
2020/02/11 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
秘鲁购物网站:Linio秘鲁
2017/04/07 全球购物
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
网络体系结构及协议的定义
2014/03/13 面试题
妇女工作先进事迹
2014/08/17 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
创业计划书之花店
2019/09/20 职场文书
你知道Java Spring的两种事务吗
2022/03/16 Java/Android
KVM基础命令详解
2022/04/30 Servers