React native 移植原生android module

来源:互联网 发布:机房网络管理 编辑:程序博客网 时间:2024/06/01 09:38

第一步:创建一个普通的module



第二步:添加依赖

compile 'com.facebook.react:react-native:0.20.1'

第三步:添加网络权限

   <uses-permission android:name="android.permission.INTERNET"/>

第四步:添加原生代码:

package com.xuan.reactnativetest;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.KeyEvent;import com.facebook.react.LifecycleState;import com.facebook.react.ReactInstanceManager;import com.facebook.react.ReactRootView;import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;import com.facebook.react.shell.MainReactPackage;public class MainActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler {    private ReactRootView reactRootView;    private ReactInstanceManager reactInstanceManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        reactRootView = new ReactRootView(this);        //ReactInstanceManager 来管理activity的生命周期        reactInstanceManager = ReactInstanceManager.builder()                .setApplication(getApplication())                .setBundleAssetName("index.android.bundle")                .setJSMainModuleName("index.android")                .addPackage(new MainReactPackage())                .setUseDeveloperSupport(BuildConfig.DEBUG)                .setInitialLifecycleState(LifecycleState.RESUMED)                .build();        reactRootView.startReactApplication(reactInstanceManager, "module name:hello world", null);        setContentView(reactRootView);    }    @Override    public void onBackPressed() {        if (reactInstanceManager != null) {            reactInstanceManager.onBackPressed();        } else {            super.onBackPressed();        }    }    @Override    protected void onPause() {        super.onPause();        if (reactInstanceManager != null) {            reactInstanceManager.onPause();        }    }    @Override    protected void onResume() {        super.onResume();        if (reactInstanceManager != null) {            reactInstanceManager.onResume(this, this);        }    }    @Override    public void invokeDefaultOnBackPressed() {        super.onBackPressed();    }    @Override    public boolean onKeyUp(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_MENU && reactInstanceManager != null) {            reactInstanceManager.showDevOptionsDialog();            return true;        }        return super.onKeyUp(keyCode, event);    }}


1 0