如何启动具有其他活动(不是MainActivity)的React Native应用

时间:2019-10-21 02:50:52

标签: react-native android-intent android-activity

我想为不同的用途制作两个应用程序图标。是否可以从不同的应用程序图标调用不同的UI组件?我也很困惑“活动”和“意图”之间的区别。

我是React Native的新手。我非常需要您的帮助。

1 个答案:

答案 0 :(得分:1)

对于android,react-native首先启动该动作是MAIN活动,您可以对其进行配置,这意味着您可以修改该活动。   在主要活动中,您可以配置已注册的主要组件 在索引js中。

 <activity
        android:name=".MainActivity"


        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:label="@string/app_name"
        android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
        </intent-filter>
    </activity>

  // Main Activity config the firstly start component
  @Override
  protected String getMainComponentName() {
    return "MainComponent";
  }

 // in the rn index.js
 import { AppRegistry } from 'react-native';
 import App from './App';
 AppRegistry.registerComponent('MainComponent', () => App);

像下面的代码一样,您可以配置要启动的活动,哪个组件是主要组件。

对于意图和活动,活动是向用户显示的用户界面,意图 是开始活动的常用方法,您可以阅读the official Api

如果要开始其他活动,则必须编写一个桥接模块, 定义一种方法来启动活动,然后将其导入您使用的组件中。   有关网桥模块的详细信息,您可以访问react-native官方网站native modules for android

public class UtilModule extends ReactContextBaseJavaModule {


private static Activity ma;


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


public static void initUtilModule(MainActivity activity) {
    ma = activity;
}

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



@ReactMethod
public  void  startActiviy() {
    Intent intent = new Intent(ma,MailActivity.class);
    ma.startActivity(intent);
}

}