(十二)React Native跳转到android原生界面Activity
2017-05-23 10:02
579 查看
该篇文章实现方法其实和之前的第八篇-React Native实现调用android原生java方法并实现广播的发送和接受,方法类似,只不过调用原生方法里的动作不同,一个是启动servicer,一个是启动activity。所以本篇不多讲直接先看效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201705/e0a52c00b597c4505556df7c8d1f8efa)
一、用AS打开项目目录的android项目,并添加一个activity,该activity中未添加任何逻辑操作:
二、添加MyIntentModule类,并继承ReactContextBaseJavaModule实现其方法和构造函数。在该类中添加方法,注意:方法头要加@ReactMethod
三、添加MyReactPackage类,实现ReactPackage接口里的方法,在重写方法createNativeModules里注册上一步添加的模块:
四、接着在MainApplication中的getPackages方法中注册到ReactPackage中:
五、接下来的工作便是RN的代码,首先引入NativeModules
然后通过NativeModules调用我们创建的类中的方法:
一、用AS打开项目目录的android项目,并添加一个activity,该activity中未添加任何逻辑操作:
package com.myreduxproject; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class UserInfoActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_info); } }
二、添加MyIntentModule类,并继承ReactContextBaseJavaModule实现其方法和构造函数。在该类中添加方法,注意:方法头要加@ReactMethod
package com.myreduxproject; import android.app.Activity; import android.content.Intent; import com.facebook.react.bridge.JSApplicationIllegalArgumentException; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; /** * Created by Administrator on 2017/5/22. */ public class MyIntentModule extends ReactContextBaseJavaModule { public MyIntentModule(ReactApplicationContext reactContext) { super(reactContext); } @Override public String getName() { return "IntentMoudle"; } @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()); } } //注意:记住getName方法中的命名名称,JS中调用需要 //注意:startActivityFromJS方法添加RN注解(@ReactMethod),否则该方法将不被添加到RN中 }
三、添加MyReactPackage类,实现ReactPackage接口里的方法,在重写方法createNativeModules里注册上一步添加的模块:
package com.myreduxproject; 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.Arrays; import java.util.Collections; import java.util.List; /** * Created by Administrator on 2017/5/22. */ 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(); } }
四、接着在MainApplication中的getPackages方法中注册到ReactPackage中:
@Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(), **new MyReactPackage(),** new BaiduMapPackage(getApplicationContext()) ); }
五、接下来的工作便是RN的代码,首先引入NativeModules
import {NativeModules} from 'react-native';
然后通过NativeModules调用我们创建的类中的方法:
NativeModules .IntentMoudle .startActivityFromJS("com.myreduxproject.UserInfoActivity", null);
相关文章推荐
- react native js调用android原生activity
- 点击Android按钮跳转到React-native指定界面
- React-Native之Android:原生界面与React界面的相互调用
- React-Native之Android:原生界面与React界面的相互调用
- 点击Android按钮跳转到React-native指定界面
- React-Native 原生跳转不同的RN界面的实现思路
- 【React Native开发】React Native移植原生Android项目(4)
- Android React Native植入原生应用小记
- Android实现两个Activity界面的跳转并传值
- Android使用intent跳转到其它应用activity界面
- Android React Native使用原生模块
- 【React Native开发】React Native移植原生Android项目(Mac用)
- Android中关于如何从一个Activity跳转到拨号界面,或者直接到通话中
- Android 实现界面(Activity)的跳转
- Android 创建一个activity 及创建Intent对象跳转界面并传值
- 2.android 原生应用和React native 结合开发.环境搭建
- android 简单地设置Activity界面的跳转动画
- android中如何实现进入一个界面不做任何动作过10秒钟自动跳转到其他activity?
- Android菜鸟笔记-WifiPickerActivity 实现跳转到系统自带wifi连接界面
- Android React Native使用原生模块