1

我不太确定发生了什么,但由于某种原因,我的 SplashActivity 没有在启动时创建,即使我为此设置了 MAIN 和 LAUNCHER 意图。这是我的清单:

    <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".SplashActivity"
        android:label="@string/title_activity_main"
        android:theme="@style/Theme.Splash" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".MainActivity"
        android:label="whatever" >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

</application>

如果我删除第二个活动,那么我的 SplashActivity 就会启动。但是由于某种原因,当包含 MainActivity 时,Splash 被忽略了。是否有可能将活动名称设为 MainActivity 会覆盖您为 Launcher 活动设置的任何内容?

更新:

似乎每个人都在建议我在发布这个问题之前已经尝试过的东西,所以我认为现在最好在更多人发布相同的建议之前提及它:)

不幸的是,删除 MainActivity 上的意图会在我的控制台输出中导致以下结果:

[2012-10-11 22:58:44 - 测试] ------------------------------
[2012-10-11 22:58:44 - 测试] Android 发布!
[2012-10-11 22:58:44 - 测试] adb 运行正常。
[2012-10-11 22:58:44 - 测试] 执行 com.test.test.MainActivity 活动启动
[2012-10-11 22:58:44 - 测试] 自动目标模式:使用设备 '9a03c386'
[2012-10-11 22:58:45 - 测试] 应用程序已经部署。无需重新安装。
[2012-10-11 22:58:45 - 测试] 在设备 9a03c386 上启动活动 com.test.test.MainActivity
[2012-10-11 22:58:45 - 测试] ActivityManager:开始:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.test.test/.MainActivity }
[2012-10-11 22:58:45 - 测试] ActivityManager:java.lang.SecurityException:权限拒绝:启动 Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg= 0x10000000 cmp=com.test.test/.MainActivity } from null (pid=12510, uid=2000) 未从 uid 10132 导出
[2012-10-11 22:58:45 - 测试] ActivityManager:在 android.os.Parcel.readException(Parcel.java:1327)
[2012-10-11 22:58:45 - 测试] ActivityManager: 在 android.os.Parcel.readException(Parcel.java:1281)
[2012-10-11 22:58:45 - 测试] ActivityManager:在 android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1728)
[2012-10-11 22:58:45 - 测试] ActivityManager:在 com.android.commands.am.Am.runStart(Am.java:433)
[2012-10-11 22:58:45 - 测试] ActivityManager:在 com.android.commands.am.Am.run(Am.java:107)
[2012-10-11 22:58:45 - 测试] ActivityManager:在 com.android.commands.am.Am.main(Am.java:80)
[2012-10-11 22:58:45 - 测试] ActivityManager:在 com.android.internal.os.RuntimeInit.finishInit(本机方法)
[2012-10-11 22:58:45 - 测试] ActivityManager:在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:263)
[2012-10-11 22:58:45 - 测试] ActivityManager:在 dalvik.system.NativeStart.main(本机方法)

不知道这是什么意思,但我不得不假设这是某种错误。

4

3 回答 3

0

试试这个

<activity
    android:name=".SplashActivity"
    android:label="@string/title_activity_main"
    android:theme="@style/Theme.Splash" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity
    android:name=".MainActivity"
    android:label="whatever" >

</activity>

于 2012-10-12T05:59:45.510 回答
0

这部分

<intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

用于让 android 知道在应用程序启动时要启动哪个 Activity。由于您在两个 Activity 中都编写了它,因此 android 将第二个作为启动 Activity。所以从 .MainActivity 块中删除该行。

<activity
    android:name=".SplashActivity"
    android:label="@string/title_activity_main"
    android:theme="@style/Theme.Splash" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity
    android:name=".MainActivity"
    android:label="whatever" >
</activity>

看到OP的编辑后

你见过这个吗?同样在更改 AndroidManifest.xml 文件后,删除并重新安装应用程序一次..

于 2012-10-12T05:59:47.463 回答
0

试试这个 :

    <activity 
        android:name="SplashScreen"
        android:theme="@style/Theme.Transparent"    
        android:screenOrientation="landscape"       
    >
        <intent-filter>
            <action android:name="android.intent.action.MAIN"></action>
            <category android:name="android.intent.category.LAUNCHER"></category>
        </intent-filter>
    </activity>

并给我评论......

于 2012-10-12T06:18:49.703 回答