React-native橋接Android原生開發(fā)詳解
在開發(fā)RN的漫漫長河中,早晚有那么一天要接觸到安卓的原生開發(fā),筆者來介紹一下其中的酸甜苦辣.對于一個不懂a(chǎn)ndroid的小白來說,剛開始有點難,不過都是萬事開頭難.語言是想通的,原理也是大徑若一.
開發(fā)過程中是要集成高德的導航功能,沒有找到好的輪子的,只要寫原生代碼,然后在用JS去調(diào)用原生的導航模塊.
首先注冊模塊
其意義在與將類注冊到RN中,才能用JS去調(diào)用
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可以直接調(diào)用(方法上必須聲明了@ReactMethod才可以)
@ReactMethod public void showFengMap(String mapID){ Activity currentActivity = getCurrentActivity(); Intent intent = new Intent(currentActivity, 頁面名.class); currentActivity.startActivity(intent); }
筆者其中的到嗎是跳轉(zhuǎn)到其他頁面,這里也可以做一些其他的操作.例如直接去分享
聲明
在安卓程序的app內(nèi)的MainApplication內(nèi),
@Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(), new AnExampleReactPackage() ); }
加入剛剛注冊過的包名
JS調(diào)用原生代碼
import { NativeModules } from 'react-native'; export default NativeModules.NaviActivity;
筆者這里寫了一個untils/CommonAndroidUntils.js,在需要用的頁面直接引入這個js文件
CommonAndroidUntils.show();
實現(xiàn)跳轉(zhuǎn).
集成高德導航
對于一個小白直接去在android studio內(nèi)集成高德地圖剛開始還是有點難度的.不過理解之后感覺還好.簡單些一下遇到的問題,提醒自己,幫助他人
直接拖入的.jar語音包不能引入
解決辦法是右鍵.jar包,有將.jar引入的選項點擊,等待同步即可.
其余的都是些小問題,根據(jù)demo以及文檔輕松解決的不值一提了.
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
React+TypeScript項目中使用CodeMirror的步驟
CodeMirror被廣泛應用于許多Web應用程序和開發(fā)工具,之前做需求用到過codeMirror這個工具,覺得還不錯,功能很強大,所以記錄一下改工具的基礎用法,對React+TypeScript項目中使用CodeMirror的步驟感興趣的朋友跟隨小編一起看看吧2023-07-07詳解React Native開源時間日期選擇器組件(react-native-datetime)
本篇文章主要介紹了詳解React Native開源時間日期選擇器組件(react-native-datetime),具有一定的參考價值,有興趣的可以了解一下2017-09-09