#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:
Я знаю, что это немного поздно, но я сделал это так:
- Изменено имя MainActivity на AppActivity (файл класс)
- Изменено имя SplashActivity на MainActivity (файл класс)
- Соответственно изменены имена в 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";
}