日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RN 与android原生交互

發布時間:2023/12/14 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RN 与android原生交互 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

緣由

有時候App需要訪問平臺api,但在RN中沒有相應的模塊,或者需要你復用一些原生代碼,這就需要進一步開發RN原生模塊。一般用React Native開發App時會用到一些原生模塊,比如:在做社會化分享、第三方登錄、掃描、通信錄,日歷等等。

開發原生模塊的主要流程

1. 編寫原生模塊的Java或者ios代碼; 2. js調用java原生代碼與數據交互; 3. 注冊與導出React Native原生模塊; 復制代碼

編寫原生模塊的Java代碼;

按照java規范,編寫相應的功能。比如QQ的分享功能。

js調用java原生代碼與數據交互;

public class QQSDK extends ReactContextBaseJavaModule {@Overridepublic String getName() {return "QQSDK";}//釋放資源@Overridepublic void onCatalystInstanceDestroy() {super.onCatalystInstanceDestroy();// ... 省略部分代碼}@ReactMethodpublic void shareText(String text,int shareScene, final Promise promise) {// ... 省略部分代碼} 復制代碼

繼承 ReactContextBaseJavaModule,我們重寫了public String getName()方法,來暴露我們原生模塊的名字。并在 public void shareText(String text,int shareScene, final Promise promise)上添加了@ReactMethod注解來暴露接口,這樣以來我們就可以在js文件中來通過shareText調用我們所暴露給React Native的接口了。

數據交互方式分三種:Promise,Callbacks,DeviceEventEmitter,注意:前2個我們只能調用一次,RCTDeviceEventEmitter,它是原生模塊和js之間的一個事件發射器

//聲明:public void shareText(String text,int shareScene, final Promise promise) //js調用QQ. shareText(”text“,shareScene)..then(); 復制代碼//聲明:public void shareText(String text,int shareScene, Callback errorCallback,Callback successCallback) //js調用 Q. shareText(”text“,shareScene,(error)=>{console.log(error); },(result)=>{console.log(result); }) 復制代碼private void sendEvent(ReactContext reactContext,String eventName, @Nullable WritableMap params) {reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName, params); } 復制代碼

在上述方法中我們可以向js模塊發送任意次數的事件,其中eventName是我們要發送事件的事件名,params是此次事件所攜帶的數據,接下來呢我們就可以在js模塊中監聽這個事件了

componentDidMount() {//注冊掃描監聽DeviceEventEmitter.addListener('onScanningResult',this.onScanningResult); } onScanningResult = (e)=> {this.setState({scanningResult: e.result,}); } 復制代碼

另外,不要忘記在組件被卸載的時候移除監聽:

componentWillUnmount(){DeviceEventEmitter.removeListener('onScanningResult',this.onScanningResult);//移除掃描監聽 } 復制代碼

注冊與導出React Native原生模塊

  • 只有我們注冊了剛才創建的原生模塊,在js中才能調用,

只需實現ReactPackage即可;模版代碼:如下

public class QQSDKPackage implements ReactPackage {@Overridepublic List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {List<NativeModule> modules = new ArrayList<>();modules.add(new QQSDK(reactContext));return modules;}public List<Class<? extends JavaScriptModule>> createJSModules() {return Collections.emptyList();}@Overridepublic List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {return Collections.emptyList();} } 復制代碼
  • 然后導出一個js模塊,以方便我們使用它 創建一個qqindex’.js文件,然后添加如下代碼:
import {NativeModules, NativeEventEmitter } from 'react-native';const {QQSDK} = NativeModules;export function shareText(text,shareScene) {return QQSDK.shareText(text,shareScene); } 復制代碼
  • 接下來就可以在js中使用我們導出的代碼了
Q. shareText(”text“,shareScene,(error)=>{console.log(error); },(result)=>{console.log(result); })復制代碼

如有疏漏,請指出,如有問題可以通過如下方式聯系我

簡書 csdn 掘金 klvens跑碼場

總結

以上是生活随笔為你收集整理的RN 与android原生交互的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 妺妺窝人体色www聚色窝仙踪 | 天堂av官网| 亚洲高清免费视频 | 亚洲综合免费 | 日本91网站| 亚洲精品乱码久久久久久麻豆不卡 | 黄瓜视频在线观看污 | 亚洲欧美一区在线 | 午夜美女福利 | 在线观看v片 | 西西人体大胆4444ww张筱雨 | 国产人妻精品一区二区三区 | 国产精品制服丝袜 | 97视频资源 | 亚洲色图校园春色 | 91在线高清 | 99国产精品一区二区三区 | 亚洲一区二区三区四区 | 亚洲成年人网站在线观看 | 成人羞羞网站 | 久久久性色精品国产免费观看 | 亚洲AV无码阿娇国产精品 | 国产永久免费视频 | 福利视频在线导航 | 宝贝乖h调教灌尿穿环 | 亚洲精品美女视频 | 日韩精品少妇 | 老鸭窝一区二区 | 六月婷婷在线观看 | 最近最新中文字幕 | 久久久情 | 日韩精品一区二区三区在线视频 | 成人一区二区三区 | 中文写幕一区二区三区免费观成熟 | 亚洲福利精品 | 免费三级网 | 午夜一二三 | 久久久久国产一区 | 国产最新在线视频 | 神马伦理影视 | a√在线视频 | 日韩爱爱免费视频 | 精品视频亚洲 | 五月伊人网 | 天堂网资源 | 成人在线欧美 | 国产婷婷在线观看 | 91插插影库 | 久久丫精品国产亚洲av不卡 | avt天堂网| 污网站免费看 | 伊人久久大香线蕉综合75 | av色在线观看 | 日韩欧美理论 | 熟女毛毛多熟妇人妻aⅴ在线毛片 | 国产一区二区在线观看免费 | 天天看夜夜操 | 伊人影院在线播放 | 亚洲高清视频在线观看 | 区一区二视频 | 天天av天天翘 | 99热在线观看免费精品 | 四虎影视成人永久免费观看亚洲欧美 | 中文字幕日韩在线播放 | 亚洲精品入口 | 老司机深夜福利在线观看 | 日本阿v视频在线观看 | 黑人极品videos精品欧美裸 | 五月天婷婷激情视频 | 久久久久国产精品人妻 | 国产又粗又黄视频 | 18禁裸乳无遮挡啪啪无码免费 | 操www| 国产一区二区精品丝袜 | 成人亚洲精品久久久久软件 | 国产精品久久久久久99 | 国产91精品久久久久久久 | 日韩欧美激情 | 亚洲av无码乱码在线观看富二代 | 狠狠的色| www.四虎.| 午夜丁香婷婷 | 97超碰在线免费观看 | 日日拍拍 | 国产乱国产乱300精品 | 日韩人妻精品一区二区三区视频 | 一本大道熟女人妻中文字幕在线 | www.日| 欧美日韩精品在线播放 | 亚洲一区二区精品在线观看 | 狠狠干夜夜 | 久久久久久影视 | 国语对白av | 日韩免费电影一区 | 国产91久久婷婷一区二区 | 在线免费视频一区二区 | 操操干干| 麻豆视频免费在线观看 | 国产精品久久久久久久av福利 |