react-native v0.29.x 后 Android 平台部分插件无法使用的问题

本文写给已经有RN封装Android原生模块经验的童鞋们。如有疑问请查看官方文档这里

在老版本的注册模块的时候,如果模块的构造函数里有Activity参数,我们可以直接在括号里面加this,如图

从 v0.29.0 开始,Android 项目新增了 MainApplication.java 模板,大部分以前在 MainActivity.java 的逻辑迁移到了这里

Register module (in MainApplication.java)

import ca.jaysoo.extradimensions.ExtraDimensionsPackage;  // <--- import

public class MainApplication extends Application implements ReactApplication {

......

protected List<ReactPackage> getPackages() {

return Arrays.<ReactPackage>asList(

new MainReactPackage(),

new ExtraDimensionsPackage()  // <--- add here

);

}

......

}

上面只是代码位置迁移,只是 new 的时候少了 this 这个参数,因为这时候 this 已经不再是 current activity 了,这也是导致整个问题的重要原因!

因为 Current Activity 已经不再通过构造函数传递进来了,我们只能通过其他的方式尝试找回 Current Activity。

那么在哪里呢?熟悉原生Android的朋友们应该知道,有一个上下文getCurrentActivity()方法,我们要用Activity的时候可以通过这个方法获取到。

那么答案已经呼之欲出了,没有错就是在我们创建模块的时候获取Activity。

如图所示

在0.29版本以前,这个OrientationModule的构造方法一般会在括号里直接加Activity参数,

public OrientationModule(ReactApplicationContext reactContext,Activity activity) {

super(reactContext);

}

然后在注册的时候加this,但是新版本不行啊,所以我们这里到出到js的方法里面如果需要用到Activity的地方

直接采用getCurrentyActivity()方法就行了,如图所示

到这里已经大功告成,剩下的就是基本的配置了,这里不再赘述

时间: 2024-10-12 13:13:35

react-native v0.29.x 后 Android 平台部分插件无法使用的问题的相关文章

React Native v0.4 发布,用 React 编写移动应用

React Native v0.4 发布,自从 React Native 开源以来,包括超过 12.5k stars,1000 commits,500 issues,380 pull requests 和 100 贡献者,还有 35 款插件 和 1 个 AppStore 应用! 直击现场 <HTML开发MacOSApp教程>  http://pan.baidu.com/s/1jG1Q58M 此版本主要改进如下: 错误信息和文档:添加了大量的警告信息,更新了文档,修复了大量的 bug 兼容 NP

React Native之微信分享(iOS Android)

React Native之微信分享(iOS Android) 在使用React Native开发项目的时候,基本都会使用到微信好友或者微信朋友圈分享功能吧,那么今天我就带大家实现以下RN微信好友以及朋友圈的分享功能. 一,应用申请审核 大家需要去微信开发平台去注册账号并且创建一个移动应用.(地址:https://open.weixin.qq.com),然后根据流程申请即可.但是需要注意的是Android需要获取签名信息: 下载安装上面的签名信息包apk,然后在上面输入android项目的包名,点

30天React Native从零到IOS/Android双平台发布总结

前言 本人有近十年的技术背景,除了APP开发之外对后端.前端等都比较熟悉,近期做一个APP项目需要IOS.Android两个平台都需要,只能硬着头皮上.其实很早就想开发APP也很早就接触Android.IOS原生开发.Hybrid.HTML5 WebAPP等开发但一直也没有做一个完整的项目,更多只是技术上的验证和尝试.这回利用这个项目机会成功的基于RN技术发布了IOS和Android两个平台的APP,项目周期由于IOS审核(第一次提交审核,修改了四次才通过)和自己假期的时间用了一个半月,实际用于

搭建基于Windows的React Native 开发环境(For Android)

React Native号称能跨平台开发IOS和Android的原生应用,想来必定会成为一种趋势.刚好计划开发一款手机APP,又没有相应的开发资源,决定自己摸索着试试. 第一步是搭建开发环境,以下是官方文档.网上资料,结合本人实际操作的总结: 一.       准备工作 (1)安装安卓SDK 根据React Native官网的指示(http://facebook.github.io/react-native/docs/android-setup.html#content),首先需要安装Andro

react native报错处理com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process

背景:最近准备在使用react-native开发的app中接入友盟,来进行用户行为统计,分享,授权登录等操作. 在使用的过程中,遇到了一些错误信息,在此记录一下. 在修改android目录下的build.gradle等信息后,运行react-native run-android报错,错误信息如下: com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderExce

React Native Android原生模块开发实战|教程|心得|如何创建React Native Android原生模块

尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 前言 一直想写一下我在React Native原生模块封装方面的一些经验和心得,来分享给大家,但实在抽不开身,今天看了一下日历发现马上就春节了,所以就赶在春节之前将这篇博文写好并发布(其实是两篇:要看iOS篇的点这里<React Native iOS原生模块开发>). 我平时在用React Native开发App时会

React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块

尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息.为大家精心准备的React Native视频教程公布了,大家现能够看视频学React Native了. 前言 一直想写一下我在React Native原生模块封装方面的一些经验和心得.来分享给大家,但实在抽不开身.今天看了一下日历发现立即就春节了.所以就赶在春节之前将这篇博文写好并公布(事实上是两篇

React Native升级指南|v0.40+升级适配经验与心得

尊重版权,未经授权不得转载 本文出自:http://blog.csdn.net/fengyuzhengfan/article/details/54585899 React Native作为一个有上千开发者参与的开源项目,自从2015年3月27日第一版发布以来到现在已经有147次版本发布了,平均起来几乎每周都会有新的版本发布.随着一次次版本的迭代,React Native也逐渐稳定,版本发布频率保持在了每一到两周一次.新版本不停的迭代对于React Native开发者来说,及时升级React Na

React Native Android 源码框架浅析(主流程及 Java 与 JS 双边通信)

[工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 有了前面<React Native Android 从学车到补胎和成功发车经历>和<React Native Android Gradle 编译流程浅析>两篇文章的学习我们 React Native 已经能够基本接入处理一些事情了,那接下来的事情就是渐渐理解 RN 框架的一些东西,以便裁剪和对 RN 有个更深入的认识,所以本篇总结了我这段时间阅读源码