React Native跳转android原生界面
16lz
2021-01-26
在AndroidStudio
创建IntentModule.java
import android.app.Activity;import android.content.Intent;import android.widget.Toast;import com.facebook.react.bridge.JSApplicationIllegalArgumentException;import com.facebook.react.bridge.ReactApplicationContext;import com.facebook.react.bridge.ReactContextBaseJavaModule;import com.facebook.react.bridge.ReactMethod;import java.util.HashMap;import java.util.Map;public class IntentModule extends ReactContextBaseJavaModule { private static final String DURATION_SHORT_KEY = "SHORT"; private static final String DURATION_LONG_KEY = "LONG"; public IntentModule(ReactApplicationContext reactContext) { super(reactContext); } @Override public String getName() { return "IntentModule"; } @Override public Map getConstants() { final Map constants = new HashMap<>(); constants.put(DURATION_SHORT_KEY, Toast.LENGTH_SHORT); constants.put(DURATION_LONG_KEY, Toast.LENGTH_LONG); return constants; } @ReactMethod public void show(String message, int duration) { Toast.makeText(getReactApplicationContext(), message, duration).show(); } @ReactMethod public void startActivityFromJS(String name, String params){ try{ Activity currentActivity = getCurrentActivity(); if(null!=currentActivity){ Class toActivity = Class.forName(name); Intent intent = new Intent(currentActivity,toActivity); intent.putExtra("params", params); currentActivity.startActivity(intent); } }catch(Exception e){ throw new JSApplicationIllegalArgumentException( "不能打开Activity : "+e.getMessage()); } }}
创建MyReactPackage.java
import com.facebook.react.ReactPackage;import com.facebook.react.bridge.JavaScriptModule;import com.facebook.react.bridge.NativeModule;import com.facebook.react.bridge.ReactApplicationContext;import com.facebook.react.uimanager.ViewManager;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class MyReactPackage implements ReactPackage { @Override public List> createJSModules() { return Collections.emptyList(); } @Override public List createViewManagers(ReactApplicationContext reactContext) { return Collections.emptyList(); } @Override public List createNativeModules( ReactApplicationContext reactContext) { List modules = new ArrayList<>(); modules.add(new IntentModule(reactContext)); return modules; }}
在MainApplication.java 添加 new MyReactPackage(),
@Override protected List getPackages() { return Arrays.asList( new MainReactPackage(), new MyReactPackage(), new PickerViewPackage() ); } };
在RN项目中添加RNToAndroid.js
'use strict';import { NativeModules } from 'react-native';export default NativeModules.IntentModule;
在需要调用的地方添加。
import RNToAndroid from '../RNToAndroid'; { // ToastAndroid.show('Awesome', ToastAndroid.SHORT); RNToAndroid.startActivityFromJS('com.navigatorapp.FirstActivity','js上传数据'); } }> 4444444444444
com.navigatorapp.FirstActivity 这个是你在安卓项目中需要添加的页面。这个你应该会写的。
更多相关文章
- android配置activity
- activity添加切换动画之后出现的黑色背景问题
- 【黑马Android】(03)学生管理系统/动态刷新界面
- android项目中单实例数据库类
- OKhttp上传头像,调用相机相册进行裁剪
- android项目迁移到androidX:类映射(android.support.v7*)
- android文件访问实例
- android添加购物车动画实现
- Android创建AlertDialog对话框 ==之一