我正在编写一个Android应用程序,它有一个主要活动和一个子活动。当我在手机上安装应用程序进行测试时,我得到两个图标而不是一个。第一个图标用于主要活动,第二个图标用于子活动。我不希望/需要一个图标的子活动。
有没有人知道如何在我的应用代码中关闭它,以便只安装主要活动的图标?非常感谢您提供的任何信息!
谢谢, MobiKnow
答案 0 :(得分:57)
您的应用程序清单是否列出了与主启动器匹配的子活动下的意图过滤器?
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
确保您的子活动没有过滤这些意图。
编辑:为了清楚起见,请确保您的子活动中未列出上述行。该意图过滤器让Android系统知道您打算将其列为应用程序的入口点。
答案 1 :(得分:17)
我们有同样的问题,但我这样修复了 在我的代码下面的清单
之前<application
android:debuggable="true"
android:allowBackup="true">
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.noupdate.apptest_noupdate.MainActivity"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
请注意,在SplashActivity里面意图是这段代码
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
我只删除了类别
<category android:name="android.intent.category.LAUNCHER" />
所以在我删除了splash中的intent-filter类别之后,它没有安装两个应用程序图标,但只有一个用于main,代码将像这样通知意图过滤器类别被删除
<application
android:debuggable="true"
android:allowBackup="true">
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity
android:name="com.noupdate.apptest_noupdate.MainActivity"
android:icon="@drawable/ic_launcher"
android:theme="@android:style/Theme.NoTitleBar"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
真的很有帮助
答案 2 :(得分:13)
它会创建两个App图标,因为您必须已将指定的过滤器添加到两个活动中。见清单。
X.1 X0 X1 X2 X3
116882-000 479958710 -4071241 541578270 584095699 649451813
从另一个语句中删除上述语句。那你就好了。
答案 3 :(得分:6)
与其他答案一样,
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
是罪魁祸首。但是,在我的清单中,我只有一个具有该意图过滤器的活动。事实证明,我使用的是我构建的库,它在其清单中声明了一个使用该intent过滤器的活动。因此,简而言之,请确保您的应用的清单和依赖项(如果有)只有一个带有intent过滤器的活动。
答案 4 :(得分:3)
我猜你的AndroidManifest.xml中有两个活动都有LAUNCHER itnent-filter。从第二个活动中删除它,你应该设置。
答案 5 :(得分:2)
你有
<intent-filter . . . >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
与
一起android:icon="@drawable/icon.png"
为两项活动设定。
这意味着这是一个启动器图标,把我放在主屏幕上。只在主屏幕上设置所需的活动(ies / y)。
答案 6 :(得分:1)
我正在寻找完全相同问题的答案。似乎唯一需要的东西(除了关于删除MAIN和LAUNCHER意图过滤器的建议)是重建你的项目 - 这将清理一切,并在下次启动时我看到我的设备上的单个图标(只是在更改之后在设备上运行应用程序)没有帮助)。
答案 7 :(得分:0)
<intent-filter android:icon=”drawable resource” android:priority=”Integer” /intent-filter>
为父组件设置优先级。此设置可帮助您设置Android应用开发的父图标。
答案 8 :(得分:0)
如果有人使用Pebble SDK遇到此问题。我注意到PebbleKit Androidmanifest.xml也包含了一个LAUNCHER活动。这就是我的原因。只需删除此部分。它不会影响Pebble功能。
答案 9 :(得分:-1)
简单答案.. 删除:
<category android:name="android.intent.category.LAUNCHER" />
从您的AndroidManifest.xml
让您的意图过滤器独自一人。