【问题标题】:How to change starting intent React Native如何更改启动意图 React Native
【发布时间】:2020-08-14 23:05:23
【问题描述】:

我正在使用开源代码开发一个 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 中。

【问题讨论】:

  • 您是在 ReactNative 上使用 Javascript 还是在本机上使用 Java 开发应用程序?我猜你很困惑

标签: android react-native android-studio


【解决方案1】:

我知道为时已晚,但我是这样安排的:

  1. 将 MainActivity 的名称更改为 AppActivity(文件 + 类)
  2. 将 SplashActivity 的名称更改为 MainActivity(文件 + 类)
  3. 相应地更改了 XML 文件中的名称

现在它可以按预期工作了。

【讨论】:

    【解决方案2】:

    对于android,react-native首先启动的action是MAIN activity,你可以配置它,意思是你可以修改activity。在主Activity中,可以配置主组件,注册在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);

    像下面的代码,你可以配置启动哪个activity,哪个组件是主要组件。

    关于intent和activity,activity是向用户展示的ui,intent是启动activity的常用方式,可以阅读官方的api

    如果你想启动另一个activity,你必须编写一个桥接模块,定义一个启动activity的方法,然后在你使用的组件中导入它。关于 bridge 模块的详细信息你可以去 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";
    }

    【讨论】:

      猜你喜欢
      • 2020-10-16
      • 2017-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多