1.我们有很多项目,想在现有的项目中集成RN,其实是比较简单的,第一步创建Activity:
package com.capmanage.activity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.view.KeyEvent;
import com.alibaba.fastjson.JSONObject;
import com.capmanage.BuildConfig;
import com.capmanage.views.AppNativePackage;
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactRootView;
import com.facebook.react.common.LifecycleState;
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
import com.facebook.react.shell.MainReactPackage;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
/**
* Created by chan on 10/01/2018.
*/
public class NewReactViewActivity extends BaseActivity implements DefaultHardwareBackBtnHandler {
public static int OVERLAY_PERMISSION_REQ_CODE = 1234;
private ReactRootView mReactRootView;
private ReactInstanceManager mReactInstanceManager;
static public NewReactViewActivity instance;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
}
}
Intent intent = getIntent();
String paramsString = intent.getStringExtra("params");
instance = this;
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModuleName("index.android")
.addPackage(new MainReactPackage())
.addPackage(new AppNativePackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
Bundle bundle = new Bundle();
bundle.putString("lanuchOptions",paramsString);
mReactRootView.startReactApplication(mReactInstanceManager, "CapManage", bundle);
setContentView(mReactRootView);
}
@Override
protected void onActivit