web-dev-qa-db-fra.com

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

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 pour l'activité principale et la seconde est pour la sous-activité. Je ne veux/n'ai pas besoin d'une icône pour la sous-activité.

Quelqu'un sait-il comment désactiver cela dans le code de mon application, de sorte 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

43
MobiKnow

Votre manifeste d'application répertorie-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 ces intentions.

Modifier: juste pour être très clair, assurez-vous que les lignes ci-dessus ne sont pas répertoriées dans votre sous-activité. Ce filtre d'intention permet au système Android Android de savoir que vous avez l'intention de le répertorier comme point d'entrée pour votre application.

67
WorkerThread

Nous avons le même problème mais je l'ai corrigé de cette façon 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>

Notez que dans SplashActivity à l'intérieur de l'intention se trouve 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 de filtre d'intention dans le splash, il n'a pas installé deux icônes d'application, mais une seule pour le code principal sera comme cet avis que la catégorie de filtre d'intention 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>

ça aide vraiment

23
Cristiana Chavez

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

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

Supprimez la déclaration ci-dessus de l'autre. Alors vous êtes prêt à partir.

16
Xar-e-ahmer Khan

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 construite et qui a une activité déclarée dans son manifeste qui utilise ce filtre d'intention. Donc, en bref, assurez-vous que le manifeste et les dépendances de votre application, le cas échéant, n'ont qu'une seule activité avec le filtre d'intention.

6
Tyler H

Tu as

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

de même que

Android:icon="@drawable/icon.png"

fixé pour les deux activités.

Cela signifie que c'est une icône de lanceur, mettez-moi sur l'écran d'accueil. Définissez uniquement ceux pour les activités souhaitées sur l'écran d'accueil.

3
Falmarri

Je vais deviner que dans votre AndroidManifest.xml, vous avez les deux activités avec le filtre d'itment LAUNCHER. Supprimez-le de la deuxième activité et vous devriez être prêt.

3
Blumer

Je cherchais une réponse à exactement la même question. Il semble que la seule chose nécessaire (en plus des recommandations sur la suppression du filtre d'intention MAIN et LAUNCHER) est de reconstruire votre projet - cela nettoiera les choses et au prochain lancement, j'ai vu une seule icône sur mon appareil (juste en exécutant l'application sur l'appareil après les changements) pas d'aide).

2
NeviQ-OR

si quelqu'un rencontre ce problème en utilisant Pebble SDK. J'ai remarqué que PebbleKit Androidmanifest.xml détient également une activité LAUNCHER. C'est ce qui m'a causé ça. Retirez simplement cette partie. Cela n'affectera pas la fonctionnalité Pebble.

1
pseudozach
<intent-filter Android:icon=”drawable resource” Android:priority=”Integer” /intent-filter>

Les priorités sont définies pour le composant parent. Ce paramètre peut vous aider à définir l'icône parent pour votre Android Android.

0
Pon Pandian

Réponse SIMPLE .. SUPPRIMER:

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

Depuis votre AndroidManifest.xml

Laissez votre filtre d'intention tranquille.

0
Fox