56 votes

Développement d'applications Android : Deux icônes sont créées et je n'en ai besoin que d'une seule.

J'écris une application Android qui a une activité principale et une sous-activité. Lorsque j'installe l'application sur mon téléphone pour la tester, j'obtiens deux icônes au lieu d'une. La première icône est celle de l'activité principale et la seconde celle de l'activité secondaire. Je n'ai pas besoin d'une icône pour l'activité secondaire.

Quelqu'un sait-il comment désactiver cette fonction dans le code de mon application, afin que seule l'icône de l'activité principale soit installée ? Toute information que vous pouvez fournir est grandement appréciée !

Merci, MobiKnow

88voto

WorkerThread Points 2045

Le manifeste de votre application indique-t-il un filtre d'intention sous votre sous-activité qui correspond au lanceur principal ?

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

Assurez-vous que votre sous-activité ne filtre pas pour ces intentions.

Edit : Pour être très clair, assurez-vous que les lignes ci-dessus ne sont pas listées sous votre sous-activité. Ce filtre d'intention permet au système Android de savoir que vous souhaitez qu'elle soit listée comme point d'entrée de votre application.

29voto

Cristiana214 Points 661

Nous avons le même problème mais je l'ai résolu de la façon suivante avant mon code ci-dessous dans le manifeste

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

Remarquez que dans l'activité SplashActivity, à l'intérieur de l'intention, il y a ce code

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

J'ai seulement supprimé la catégorie

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

Donc après avoir supprimé la catégorie intent-filter dans le splash, il n'a pas installé deux icônes d'application mais une seule pour la principale. Le code sera comme ceci : remarquez que la catégorie intent-filter est supprimée.

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

cela aide vraiment

19voto

Xar-e-ahmer Khan Points 1434

Il crée deux icônes d'application car vous devez avoir ajouté le filtre donné à deux de vos activités. Voir le manifeste.

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

Retirez la déclaration ci-dessus de l'autre. Ensuite, vous êtes prêt à partir.

9voto

Tyler H Points 81

Comme dans les autres réponses,

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

était le coupable. Cependant, dans mon manifeste, je n'avais qu'une seule activité avec ce filtre d'intention. Il s'avère que j'utilise une bibliothèque que j'ai créée et qui a une activité déclarée dans son manifeste qui utilise ce filtre d'intention. En résumé, assurez-vous que le manifeste de votre application et ses dépendances, le cas échéant, ne comportent qu'une seule activité avec le filtre d'intention.

6voto

Blumer Points 3380

Je suppose que dans votre AndroidManifest.xml, les deux activités ont le filtre d'intention LAUNCHER. Retirez-le de la deuxième activité, et vous devriez être prêt !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X