【问题标题】:android not launching correct activityandroid没有启动正确的活动
【发布时间】:2012-10-12 05:56:22
【问题描述】:

我不太确定发生了什么,但由于某种原因,我的 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(本机方法)

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

【问题讨论】:

  • 尝试为您的 MainActivity 删除
  • 您的建议有效,但似乎还有另一个问题是由此导致的。现在,当我尝试从 Eclipse 运行该程序时,该程序不会在我的手机上自动启动,而是 Eclipse 只是安装它而不做任何其他事情。我每次都必须自己在手机上手动运行程序。但是,如果我按照以前的方式离开 Manifest,那么当我从 Eclipse 运行它时,我的程序会自动启动。是什么导致了这个新问题?我需要在 Manifest 中添加其他内容吗?
  • @paulsmith - 我现在也有同样的问题。应用程序不会在我的手机上自动运行。你找到解决办法了吗?

标签: android android-intent


【解决方案1】:

部分

<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 的编辑后

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

【讨论】:

  • 顺便说一句,我注意到当我这样做时,当我在 Eclipse 中按下运行按钮时,应用程序不会在我的手机上自动启动。它只是将它安装在我的设备上,然后我必须在手机上手动启动该程序。这是为什么?它必须与此更改相关,因为如果我保持原样,当我从 Eclipse 运行程序时,程序会自动在我的手机上启动。
【解决方案2】:

试试这个

<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>

【讨论】:

    【解决方案3】:

    试试这个:

        <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>
    

    并给我评论......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-15
      • 2015-06-04
      • 2016-12-28
      • 2011-12-09
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多