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实现控制内容的向上向下滚动效果
Jun 26 Javascript
javascript中的107个基础知识收集整理 推荐
Mar 29 Javascript
理解Javascript_14_函数形式参数与arguments
Oct 20 Javascript
jquery中交替点击事件的实现代码
Feb 14 Javascript
用户代理字符串userAgent可实现的四个识别
Sep 20 Javascript
跟我学习javascript的定时器
Nov 19 Javascript
微信小程序 引用其他js文件实现代码
Feb 22 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
Dec 08 Javascript
Vue实现一个无限加载列表功能
Nov 13 Javascript
在react中使用vue的状态管理的方法示例
May 02 Javascript
vue大型项目之分模块运行/打包的实现
Sep 21 Javascript
Web应用开发TypeScript使用详解
May 25 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 缓冲的免费实现方法
2006/10/09 PHP
php实现的MySQL通用查询程序
2007/03/11 PHP
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
php中对2个数组相加的函数
2011/06/24 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
Python使用Scrapy爬取妹子图
2015/05/28 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
机器学习10大经典算法详解
2017/12/07 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
如何用python写个模板引擎
2021/01/14 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
中间件分为哪几类
2016/09/18 面试题
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
手机业务员岗位职责
2013/12/13 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
创卫工作总结2015
2015/04/22 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书