Android上的启动画面

时间:2017-03-23 10:27:05

标签: react-native

我在Android上的启动画面有问题。以下是我正在做的一切:

  1. 创建background_splash.xml文件:

    xml version =" 1.0"编码=" UTF-8"> layer-list xmlns:android =" http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@android:color/darker_gray"/>
    
    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/splash"/>
    </item>
    

  2. 我删除&lt;在前两行中,因为stackoverflow无法显示它们。此文件位于drawable。

    我在styles.xml中添加了以下内容:

    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
            <item name="android:windowBackground">@drawable/background_splash</item>
    </style>
    

    这是我的清单文件:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.test"
        android:versionCode="1"
        android:versionName="1.0">
    
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    
        <uses-sdk
            android:minSdkVersion="16"
            android:targetSdkVersion="22" />
    
        <application
          android:name=".MainApplication"
          android:allowBackup="true"
          android:label="@string/app_name"
          android:icon="@mipmap/ic_launcher"
          android:theme="@style/AppTheme">
    
          <activity
                android:name=".SplashActivity"
                android:label="@string/app_name"
                android:theme="@style/SplashTheme">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity android:name=".MainActivity" />
    
          <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
        </application>
    
    </manifest>
    

    还有活动:

    import android.content.Intent;
    import android.os.Bundle;
    
    import com.facebook.react.ReactActivity;
    
    public class SplashActivity extends ReactActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
            finish();
        }
    }
    

    这是我的错误:

    Starting the app on 51d123cc (adb -s 51d123cc shell am start -n com.test/.MainActivity)...
    Starting: Intent { cmp=com.test/.MainActivity }
    java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.test/.MainActivity } from null (pid=20601, uid=2000) not exported from uid 11152
        at android.os.Parcel.readException(Parcel.java:1540)
        at android.os.Parcel.readException(Parcel.java:1493)
        at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:2589)
        at com.android.commands.am.Am.runStart(Am.java:768)
        at com.android.commands.am.Am.onRun(Am.java:307)
        at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
        at com.android.commands.am.Am.main(Am.java:102)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:255)
    

    更新:

    对于@Ankit Prajapati的答案,我还要加上我设置

    机器人:largeHeap =&#34;真&#34;

    这是来自Android Studio的错误(从终端运行此错误未报告),这是在将活动更改为SplashActivity之后发生的。

    还需要更改编辑配置并更改&#34;启动活动&#34;到&#34;指定的活动&#34;并设置com.test.SplashActivity。

    在Android上管理启动画面的第二种方法是我现在使用的是本教程:

    Splash Screen Android

1 个答案:

答案 0 :(得分:1)

尝试在

中使用此功能

android:exported =“true”在您尝试启动的活动的清单文件中(正在加载活动) 喜欢这个

<activity
        android:name=".SplashActivity"
        android:label="@string/app_name"
        android:theme="@style/SplashTheme"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

同时添加

Intent intent = new Intent(SplashActivity.this, MainActivity.class);