2011-01-06 42 views
25

我正在编写一个Android应用程序,其中包含一项主要活动和一项子活动。当我在手机上安装应用程序进行测试时,我得到两个图标而不是一个。第一个图标用于主要活动,第二个图标用于子活动。我不想/需要一个子活动的图标。Android应用程序开发:创建两个图标,我只需要一个

有谁知道如何在我的应用程序代码中关闭此功能,以便只安装主要活动的图标?您可以提供的任何信息非常感谢!

感谢, MobiKnow

+1

1我有同样的问题,只是我已经删除了 <意图滤波器> <操作机器人:名称=“android.intent.action.MAIN” /> <类别机器人:名称=” android.intent.category.LAUNCHER“/> 从第二个活动和问题已解决(我在飞溅和主屏幕) – 2012-09-20 12:09:12

回答

46

请问您的应用程序清单列表中选择子活动下一个意图过滤器主发射器相匹配?

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

确保您的子活动不会过滤这些意图。

编辑:只要非常清楚,请确保上述行不在您的子活动中。该意图过滤器让Android系统知道您打算将它列为应用程序的入口点。

+0

我想只为子活动添加一个快捷方式,它需要。所以现在我有2个应用程序图标。我怎样才能禁用子活动图标(不是快捷方式)? – Silentbang 2013-09-28 13:09:04

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

3

我会猜测在你的AndroidManifest.xml中,你有两个活动都有LAUNCHER itnent过滤器。从第二个活动中删除它,并且应该设置。

0
<intent-filter android:icon=”drawable resource” android:priority=”Integer” /intent-filter> 

为父组件设置优先级。此设置可以帮助您为Android应用开发设置父图标。

10

我们有相同的问题,但我固定它这样 我的代码之前,下面的清单

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

因此,我删除在飞溅它没有安装两个应用程序图标,但只有一个主要意图过滤器类的代码会是这样的通知,意图过滤器类别已删除

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

它确实有助于

1

我搜索答案完全相同的问题。它似乎是唯一需要的东西(除了关于移除MAIN和LAUNCHER意图过滤器的建议之外)是重建您的项目 - 这将清理事情,并且在下次启动时,我在设备上看到单个图标(仅在设备上运行应用程序没有帮助)。

0

如果有人使用Pebble SDK遇到此问题。我注意到PebbleKit Androidmanifest.xml也包含LAUNCHER活动。这是对我造成的。只要删除这部分。它不会影响Pebble功能。

8

它创建两个应用程序图标,因为您必须将给定的过滤器添加到您的两个活动中。查看清单。

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

从另一个取消上述声明。那么你很好去。

2

像其他的答案,

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

是罪魁祸首。但是,在我的清单中,我只使用该意向过滤器进行了一项活动。事实证明,我正在使用一个我建立的库,它有一个在它的清单中声明的​​活动,它使用了这个intent过滤器。因此,简而言之,请确保您的应用程序的清单和依赖关系(如果有的话)只有意向过滤器的一项活动。

相关问题