温故知新,记录一下吧,免得自己忘了

1.MyIntentModule.Java 类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class MyIntentModule extends ReactContextBaseJavaModule {

public MyIntentModule(ReactApplicationContext reactContext) {
super(reactContext);
}

@Override
public String getName() {
return "IntentModule";
}

/**
* 从JS页面跳转到原生activity 同时也可以从JS传递相关数据到原生
* @param name 需要打开的Activity的class
* @param params
*/
@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());
}
}
}

2.MyReactPackage.java类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MyReactPackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
return Arrays.<NativeModule>asList(
new MyIntentModule(reactContext)

);
}

@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}

@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();

}
}

3.MainApplication添加

    new MyReactPackage()

4.随便创建一个Activity页面

(com.wildwolf.myrn.ThridActivity )

5.index.android.js

1
2
3
4
5
6
7
8
9
10
import {
...
NativeModules
} from 'react-native';
...
<TouchableWithoutFeedback
onPress={() =>
NativeModules.IntentModule.startActivityFromJS("com.wildwolf.myrn.ThridActivity","我是从JS传过来的参数信息.")}>
<Text style={styles.text}>Click me.</Text>
</TouchableWithoutFeedback>

over