Modifier l'activité de démarrage de l'application

386

J'ai créé la viande et les tripes de mon application mais je veux ajouter une activité différente qui sera le point de départ (une sorte d'écran de connexion).

Questions de couple:

  • 1 J'ai une poignée assez décente sur la façon de basculer entre les activités (basé sur cet article: http://www.linux-mag.com/id/7498 ) mais je ne sais pas comment procéder pour en créer une nouvelle ( avec éclipse) .

  • 2 Une fois que j'ai créé une nouvelle activité, comment puis-je la définir comme activité par défaut de mon application? Je suppose que je pourrais simplement changer le nom des classes ... mais y a-t-il une façon plus élégante de gérer cela (peut-être dans le AndroidManifest.xml)?

Kyle
la source

Réponses:

660

Oui, vous utilisez le AndroidManifest.xmlfichier. Vous pouvez même avoir plus d'une activité de lancement spécifiée dans le manifeste de votre application. Pour rendre une activité visible sur le lanceur, vous ajoutez ces attributs à votre activité dans le manifeste:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Nathan Schwermann
la source
49
Pour toute personne qui ne sait pas de quoi le manifeste parle, c'est le fichier AndroidManifest.xml à la racine de votre projet. Dans Eclipse, vous pouvez double-cliquer dessus et cliquer sur l'onglet le plus à droite pour modifier directement le XML.
Austyn Mahoney du
3
grand merci. Donc, en incluant ce nœud de filtre d'intention avec ses nœuds enfants, quelle activité se charge dans le premier à charger au démarrage de l'application?
Kyle
4
@Kyle, cette activité apparaîtra sur la page du lanceur, vous pouvez avoir plusieurs activités avec ce filtre d'intention vous donnant plusieurs icônes sur l'écran d'accueil.
Nathan Schwermann,
3
vous mentionnez cette ligne "vous pouvez même avoir plus d'une activité de lancement spécifiée dans le manifeste de votre application". Quelle activité sera lancée en premier si nous avons plus d'une activité
Tofeeq Ahmad
48
C'est la bonne réponse, mais je viens de remarquer quelque chose d'étrange: si vous changez l'activité de démarrage par autre chose et que l'activité lancée d'origine existe toujours, le SDK ne pourra plus lancer votre application. D'une manière ou d'une autre, il fait référence à l'activité de la configuration de lancement. Donc, après avoir effectué la modification ci-dessus, vous devez également aller dans "Exécuter"> "Configurations de débogage", trouver le profil de construction de votre projet, onglet "Android", et changer l'activité lancée par défaut ou correcte sous "Lancer : ". Je ne sais pas pourquoi la valeur par défaut a été désélectionnée pour moi, mais la modifier a fonctionné.
zeh
91

Accédez à AndroidManifest.xml dans le dossier racine de votre projet et modifiez le nom de l'activité que vous souhaitez exécuter en premier.

Exemple:

<activity android:name=".put your started activity name here"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
neeraj t
la source
11
si cela ne fonctionne toujours pas dans Android Studio, vous devez cliquer sur l'icône Android (celle avec le mot app) et sélectionner "Modifier les configurations", puis dans l'onglet Général, section Activité, sélectionnez "Lancer l'activité par défaut"
Arme X
47

Si vous utilisez Android Studio et que vous avez peut-être déjà sélectionné une autre activité à lancer.

Cliquez sur Run > Edit configurationpuis assurez-vous que Lancer l'activité par défaut est sélectionné.

Lancer l'activité par défaut

Zeezer
la source
si dans AndroidManifest.xml il n'y a pas de filtre d'intention pour le lanceur, c'est la solution.
Amir Fazwan
1
Cela s'applique également à Eclipse. Il ne suffit pas de spécifier les filtres d'intention. Les filtres d'intention sont utilisés si l'APK est exécuté directement par l'utilisateur, mais si l'APK est exécuté par Eclipse, qui l'installe, essaie de lancer une activité spécifique. Cette activité spécifique est spécifiée dans "Propriétés du projet" (clic droit sur le projet) -> Paramètres d'exécution / débogage.
Iker Jamardo Zugaza
Ceci est incroyable! Merci pour l'astuce
Rafael Oliveira
30
 <application
    android:icon="@drawable/YOUR_ICON"    <!-- THIS ICON(IMAGE) WILL BE SHOWN IN YOUR APPS -->
    android:label="MY APP NAME " >    <!-- HERE LABEL(APP NAME) -->
    <activity
        android:name=".application's starting activity"  <!-- (.)dot means current dir, if your activity is in another package then give full package name ex: com.xxx.Activity  -->
        android:label="LABEL FOR ACTIVITY "
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
LMK
la source
18

Suivez les instructions ci-dessous:

1 :) Ouvrez votre AndroidManifest.xml fichier.

2 :) Accédez au code d'activité que vous souhaitez faire de votre activité principale comme ci-dessous.

comme je veux faire de SplashScreen comme activité principale

<activity
    android:name=".SplashScreen"
    android:screenOrientation="sensorPortrait"
    android:label="City Retails">
</activity>

3 :) Copiez maintenant le code ci-dessous entre les balises d'activité comme:

<activity
    android:name=".SplashScreen"
    android:screenOrientation="sensorPortrait"
    android:label="City Retails">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

et vérifiez également que les lignes nouvellement ajoutées ne sont pas associées à d'autres balises d'activité.

Bhunnu Baba
la source
17

C'est facile à réparer.

  • Les modifications apportées à l'activité du lanceur sont également stockées dans la configuration de débogage .
  • Accédez à Run > Debug Configurationset modifiez le paramètre.
  • Il existe également un paramètre similaire dans Intellij sous Run > Edit Configurationssélectionnez Exécuter l'activité par défaut et il n'enregistrera plus le paramètre de cette manière.
user3154790
la source
14

C'est simple. Faites-le dans votre Manifestdossier.

<activity
    android:name="Your app name"
    android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
</activity>
Rohit Sharma
la source
1
vous devez supprimer <category android: name = "android.intent.category.HOME" />
Behrouz.M
2
<category android:name="android.intent.category.DEFAULT" />, c'est
exactement
1
android.intent.category.HOMEest destiné à être utilisé dans une application de style Kiosk, où le lanceur par défaut est remplacé. L'utiliser sans remplacer le lanceur entraînera une invite au démarrage de SystemUI demandant quel lanceur utiliser. Voir aussi: stackoverflow.com/questions/22911156/…
CJBS
6
 <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
Exception de pointeur nul
la source
5

Accédez simplement à votre fichier AndroidManifest.xml et ajoutez comme ci-dessous

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

puis enregistrez et exécutez votre projet Android.

user3206168
la source
3

Vous ajoutez ceci que vous souhaitez lancer l'activité android:exported="true"dans le fichier manifeste comme

 <activity
      android:name=".activities.activity.MainActivity"
      android:windowSoftInputMode="adjustPan"
      android:exported="true"/>
  <activity

Ouvrez le fichier java de cette activité et faites un clic droit puis cliquez sur Exécuter 'activité principale'

OU

Ouvrez le fichier java de cette activité et appuyez sur Ctrl+ Shift+ F10.

Prabh profond
la source
Quel effet cela a-t-il? Vous venez de lancer?
chia yongkang
2

Dans un projet récent, j'ai changé l'activité par défaut dans AndroidManifest.xml avec:

<activity android:name=".MyAppRuntimePermissions">
</activity>

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

Dans Android Studio 3.6; cela semble rompu. J'ai utilisé cette technique dans des exemples d'applications, mais lorsque je l'utilise dans cette application réelle, elle tombe à plat. L'IDE rapporte à nouveau:

Erreur lors de l'exécution de l'application: activité par défaut introuvable.

L'IDE montrait toujours une erreur de configuration dans l'espace "exécuter l'application" de la barre d'outils (flèche jaune sur cette capture d'écran)

Erreur dans la configuration «exécuter l'application»

Pour corriger cette erreur, j'ai essayé plusieurs reconstructions du projet, et enfin File >> "Invalidate Cache / Restart" . Cela n'a pas aidé. Pour exécuter l'application, je devais "Modifier les configurations" et pointer sur l'activité spécifique au lieu de l'activité par défaut:

Boîte de dialogue Modifier la configuration

martshal
la source