2011-01-06 88 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過濾器。因此,簡而言之,請確保您的應用程序的清單和依賴關係(如果有的話)只有意向過濾器的一項活動。

相關問題