index.android.js
import React, {Component} from ‘react‘;
import {
AppRegistry,
StyleSheet,
Text,
View,
NativeModules,
} from ‘react-native‘;
class www extends Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.instructions} onPress={() => this.onClick()}>
点我
</Text>
</View>
);
}
/**
* 调用原生页面
* ControlPCActivity是你想跳转到的页面
*/
onClick() {
NativeModules.MyMapIntentModule.startActivityByClassname(‘com.www.ControlPCActivity‘)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: ‘center‘,
alignItems: ‘center‘,
backgroundColor: ‘#F5FCFF‘,
},
instructions: {
textAlign: ‘center‘,
color: ‘#333333‘,
marginBottom: 5,
},
});
AppRegistry.registerComponent(‘www‘, () => www);
MyMapIntentModule.java
package com.www; import android.app.Activity; import android.content.Intent; import android.text.TextUtils; import android.content.Context; import android.widget.Toast; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.JSApplicationIllegalArgumentException; public class MyMapIntentModule extends ReactContextBaseJavaModule { public static final String REACTCLASSNAME = "MyMapIntentModule"; private Context mContext; public MyMapIntentModule(ReactApplicationContext reactContext) { super(reactContext); mContext = reactContext; } @Override public String getName() { return REACTCLASSNAME; } /** * js页面跳转到activity 并传数据 * @param name */ @ReactMethod public void startActivityByClassname(String name){ try{ Activity currentActivity = getCurrentActivity(); if(null!=currentActivity){ Class aimActivity = Class.forName(name); Intent intent = new Intent(currentActivity,aimActivity); currentActivity.startActivity(intent); } }catch(Exception e){ throw new JSApplicationIllegalArgumentException( "无法打开activity页面: "+e.getMessage()); } } }
MyReactPackage.java
package com.www; 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<NativeModule> createNativeModules(ReactApplicationContext reactContext) { List<NativeModule> modules = new ArrayList<>(); modules.add(new MyMapIntentModule(reactContext)); return modules; } @Override public List<Class<? extends JavaScriptModule>> createJSModules() { return Collections.emptyList(); } @Override public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { return Collections.emptyList(); } }
MainApplication.java
package com.www; import android.app.Application; import android.util.Log; import com.facebook.react.ReactApplication; import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.react.shell.MainReactPackage; import com.facebook.soloader.SoLoader; import java.util.Arrays; import java.util.List; public class MainApplication extends Application implements ReactApplication { private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { @Override protected boolean getUseDeveloperSupport() { return BuildConfig.DEBUG; } @Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(), new MyReactPackage() //只需添加这里 ); } }; @Override public ReactNativeHost getReactNativeHost() { return mReactNativeHost; } @Override public void onCreate() { super.onCreate(); SoLoader.init(this, /* native exopackage */ false); } }
原文:http://www.cnblogs.com/shen076/p/6380034.html