android没有启动正确的活动

时间:2012-10-12 05:56:22

标签: android android-intent

我不确定发生了什么,但出于某种原因我的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 - Test] ------------------------------
[2012-10-11 22:58:44 - Test] Android Launch!
[2012-10-11 22:58:44 - Test] adb is running normally.
[2012-10-11 22:58:44 - Test] Performing com.test.test.MainActivity activity launch
[2012-10-11 22:58:44 - Test] Automatic Target Mode: using device '9a03c386'
[2012-10-11 22:58:45 - Test] Application already deployed. No need to reinstall.
[2012-10-11 22:58:45 - Test] Starting activity com.test.test.MainActivity on device 9a03c386
[2012-10-11 22:58:45 - Test] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.test.test/.MainActivity }
[2012-10-11 22:58:45 - Test] ActivityManager: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.test.test/.MainActivity } from null (pid=12510, uid=2000) not exported from uid 10132
[2012-10-11 22:58:45 - Test] ActivityManager: at android.os.Parcel.readException(Parcel.java:1327)
[2012-10-11 22:58:45 - Test] ActivityManager: at android.os.Parcel.readException(Parcel.java:1281)
[2012-10-11 22:58:45 - Test] ActivityManager: at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1728)
[2012-10-11 22:58:45 - Test] ActivityManager: at com.android.commands.am.Am.runStart(Am.java:433)
[2012-10-11 22:58:45 - Test] ActivityManager: at com.android.commands.am.Am.run(Am.java:107)
[2012-10-11 22:58:45 - Test] ActivityManager: at com.android.commands.am.Am.main(Am.java:80)
[2012-10-11 22:58:45 - Test] ActivityManager: at com.android.internal.os.RuntimeInit.finishInit(Native Method)
[2012-10-11 22:58:45 - Test] ActivityManager: at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:263)
[2012-10-11 22:58:45 - Test] ActivityManager: at dalvik.system.NativeStart.main(Native Method)

不知道这意味着什么,但我必须假设它是某种错误。

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

部分

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

用于让android知道应用程序启动时启动哪个活动。既然你在你的两个活动中都写了它,那么android将第二个作为起始活动。 所以从.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的编辑后

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

答案 2 :(得分: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>

并给我评论...................