Как изменить начальное намерение React Native

#android #react-native #android-studio

#Android #react-native #android-studio

Вопрос:

Я использую открытый исходный код для разработки приложения для Android, используя React Native. Я добавил экран-заставку (SplashActivity.java ) и сохранил его в качестве средства запуска в AndroidManifest.xml . Однако каждый раз, когда я запускаю приложение, терминал показывает следующий вывод:

 BUILD SUCCESSFUL in 30s
266 actionable tasks: 12 executed, 254 up-to-date
info Connecting to the development server...
info Starting the app on "MYDEVICE"...
Starting: Intent { cmp=go.sampleproject.io/.MainActivity }
  

Последняя строка показывает, что начальным намерением является MainActivity. Кто-нибудь может подсказать, как это можно изменить на SplashActivity вместо этого?

Код выполняется правильно, но когда я запускаю приложение через терминал, на моем устройстве не отображается SplashActivity, хотя я сохранил его в качестве средства запуска в моем AndroidManifest.xml .

Комментарии:

1. Вы разрабатываете приложение на ReactNative с использованием Javascript или изначально с Java? Я думаю, вы запутались

Ответ №1:

Я знаю, что это немного поздно, но я сделал это так:

  1. Изменено имя MainActivity на AppActivity (файл класс)
  2. Изменено имя SplashActivity на MainActivity (файл класс)
  3. Соответственно изменены имена в XML-файлах

Теперь все работает так, как ожидалось.

Ответ №2:

для Android сначала запускается react-native, действие является ОСНОВНЫМ действием, вы можете настроить его, это означает, что вы можете изменять действие. в основном действии вы можете настроить основной компонент, который зарегистрирован в index.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);  

как и приведенный ниже код, вы можете настроить, какое действие запускать, какой компонент является основным компонентом.

Что касается намерения и активности, активность — это пользовательский интерфейс, который отображается для пользователя, намерение — это обычный способ начать активность, вы можете прочитать официальный Api

если вы хотите запустить другое действие, вам нужно написать модуль bridge, определить метод для запуска действия, затем импортировать его в компонент, в котором вы используете. подробнее о модуле bridge вы можете узнать на официальном сайте react-native native modules для 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";
}