7

我一直在处理一段时间的应用程序时遇到了一个非常令人困惑的问题。突然,在运行我的应用程序时,我发现启动时立即强制关闭。

经过进一步调查,我在启动器中发现了两个启动器图标。其中之一将在应用程序运行时恢复应用程序,如果应用程序未运行,则强制关闭。第二个将正常运行 - 正常启动应用程序并正常恢复。

我很困惑,因为我没有做任何事情(我能想到的)来导致这个问题。我没有更改清单中的任何内容,只是实施了一些新方法来更快地更改我的应用程序中的颜色。

无论我关闭手机、手动终止应用程序还是卸载/重新安装应用程序,这些问题在我所有的模拟器和设备中都同样存在。一个简单的 ctrl+z 不起作用。澄清一下——我只想返回一个启动器图标来正常启动我的应用程序(没有什么特别的事情发生)。

更新:

现在,我在从任一图标启动时都会立即关闭。我确实在我的清单显示的两个活动中找到了代码,并将第二行从 .LAUNCHER 更改为 .DEFAULT 确实解决了我原来的问题。但是,我现在总是会立即强制关闭...在我最初的启动器活动中现在存在问题(我可以看到)...我在尝试解决这个问题时遇到了很多麻烦(不知道该怎么办做)并且开始变得非常担心!

更新 2:

我发现了我的问题,我感谢你们所有的帮助!我实际上同时发生了两个独立且不相关的问题。第一个 - 我的启动器中有两个图标:因为我有两个活动

4

5 回答 5

24

两项活动有

 <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>

删除第二个

于 2012-01-02T06:14:19.880 回答
3

实际上,Android Launcher 显示的是 LAUNCHER 类别的所有活动,而不是应用程序。

如果您的应用程序包含超过 1 个活动,您必须仅对应用程序的默认活动(初始屏幕)使用操作 MAIN 和类别 LAUNCHER,而不是对您在应用程序中使用的所有活动。如果您为应用程序中的每个活动设置相同的内容,它将显示在 Android 启动器中。

请阅读 Intent Actions 和 Categories,你会明白的。

于 2012-01-02T06:43:32.453 回答
2

好吧,我面临同样的问题。问题是当我运行应用程序时,它正在创建两个图标,一个名为 MyApp,另一个名为 SplashActivity。当我尝试卸载 SplashActivity(命名应用程序)时,在确认消息中它说

SplashActivity 是 MyApp 的一部分,确定要卸载吗?

看了一些参考资料后,得出的结论是,当我们把

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

在任何活动下,android 都认为这是 App 的 MAIN 入口点。并为该活动创建一个启动器图标。但名称保留为 acivityName。

所以最后通过改变 SplashActivity 的 Activity 标签

 <activity
    android:name=".activities.SplashActivity"
    android:label="@string/title_activity_splash"
    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=".activities.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>

它解决了我的多个图标和启动器图标名称为 activityName 而不是 appName 的问题。

于 2014-09-13T07:20:56.603 回答
0

就我而言,帮助了类似的事情

清单文件中的旧一行

闪屏活动

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

主要活动

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

还有新的

闪屏活动

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

主要活动

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
</intent-filter>

只需在主活动中删除下面的这一行

<category android:name="android.intent.category.LAUNCHER" />

就是这样!

于 2015-01-02T16:47:34.113 回答
0

在 AndroidMenifest.xml 文件中,您必须删除两个或三个 android 名称,即

<activity
    android:name=".SplashScreen"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
于 2016-03-10T09:54:29.130 回答