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自定义方法通过隐藏iframe实现文件下载
Feb 21 Javascript
jquery中子元素和后代元素的区别示例介绍
Apr 02 Javascript
jquery的trigger和triggerHandler的区别示例介绍
Apr 20 Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
Sep 01 Javascript
Form表单按回车自动提交表单的实现方法
Nov 18 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
Feb 14 Javascript
jquery实现手机端单店铺购物车结算删除功能
Feb 22 Javascript
angular或者js怎么确定选中ul中的哪几个li
Aug 16 Javascript
详解Vue源码之数据的代理访问
Dec 11 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
Jul 31 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
Thinkphp中的volist标签用法简介
2014/06/18 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
php命令行用法入门实例教程
2014/10/27 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
Laravel下生成验证码的类
2017/11/15 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
javascript AutoScroller 函数类
2009/05/29 Javascript
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
python实现计算倒数的方法
2015/07/11 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
浅析使用Python搭建http服务器
2019/10/27 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
python opencv肤色检测的实现示例
2020/12/21 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
美国在线家具网站:GDFStudio
2021/03/13 全球购物
青安岗事迹材料
2014/05/14 职场文书
中文专业求职信
2014/06/20 职场文书
社会实践活动总结范文
2014/07/03 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python