Ändern Sie die Startaktivität der Anwendung

386

Ich habe das Fleisch und den Mut meiner Anwendung erstellt, möchte aber eine andere Aktivität hinzufügen, die als Ausgangspunkt dient (eine Art Anmeldebildschirm).

Paar Fragen:

  • 1 Ich habe ein ziemlich gutes Gespür für das Umschalten zwischen Aktivitäten (basierend auf diesem Artikel: http://www.linux-mag.com/id/7498 ), bin mir aber nicht sicher, wie ich eine neue erstellen soll ( mit Sonnenfinsternis) .

  • 2 Wie kann ich eine neue Aktivität als Standardaktivität meiner Anwendung festlegen , nachdem ich sie erstellt habe? Ich nehme an, ich könnte einfach den Namen der Klassen ändern ... aber gibt es eine elegantere Möglichkeit, damit umzugehen (vielleicht innerhalb der AndroidManifest.xml)?

Kyle
quelle

Antworten:

660

Ja, Sie verwenden die AndroidManifest.xmlDatei. Sie können sogar mehr als eine Launcher-Aktivität in Ihrem Anwendungsmanifest angeben. Um eine Aktivität im Launcher anzuzeigen, fügen Sie Ihrer Aktivität im Manifest folgende Attribute hinzu:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Nathan Schwermann
quelle
49
Für alle, die nicht wissen, worüber das Manifest in diesem Beitrag spricht, ist es die Datei AndroidManifest.xml im Stammverzeichnis Ihres Projekts. In Eclipse können Sie darauf doppelklicken und auf die Registerkarte ganz rechts klicken, um das XML direkt zu bearbeiten.
Austyn Mahoney
3
vielen Dank. Wenn Sie also diesen Intent-Filter-Knoten in seine untergeordneten Knoten aufnehmen, wird die Aktivität beim Start der Anwendung als erste geladen?
Kyle
4
@Kyle Dadurch wird diese Aktivität auf der Startseite angezeigt. Mit diesem Absichtsfilter können Sie mehrere Aktivitäten ausführen, sodass Sie mehrere Symbole auf dem Startbildschirm erhalten.
Nathan Schwermann
3
Sie erwähnen diese Zeile "Sie können sogar mehr als eine Launcher-Aktivität in Ihrem Anwendungsmanifest angeben". Diese Aktivität wird zuerst gestartet, wenn wir mehr als eine Aktivität haben
Tofeeq Ahmad
48
Dies ist die richtige Antwort, aber ich habe gerade etwas Seltsames bemerkt: Wenn Sie die Startaktivität in etwas anderes ändern und die ursprünglich gestartete Aktivität noch vorhanden ist, kann das SDK Ihre Anwendung nicht mehr starten. Irgendwie hat es einen Verweis auf die Aktivität in der Startkonfiguration. Nachdem Sie die obige Änderung vorgenommen haben, müssen Sie auch zu "Ausführen"> "Debug-Konfigurationen" gehen, das Build-Profil Ihres Projekts suchen, die Registerkarte "Android" auswählen und die gestartete Aktivität unter "Starten" auf die Standardaktivität oder die richtige ändern : ". Ich bin mir nicht sicher, warum die Standardeinstellung für mich abgewählt wurde, aber das Zurücksetzen hat funktioniert.
zeh
91

Gehen Sie zu AndroidManifest.xml im Stammordner Ihres Projekts und ändern Sie den Aktivitätsnamen, den Sie zuerst ausführen möchten.

Beispiel:

<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
quelle
11
Wenn dies in Android Studio immer noch nicht funktioniert, müssen Sie auf das Android-Symbol (das mit der Wort-App) klicken und "Konfigurationen bearbeiten" auswählen. Wählen Sie dann auf der Registerkarte "Allgemein" im Abschnitt "Aktivität" die Option "Standardaktivität starten"
Waffe X
47

Wenn Sie Android Studio verwenden und zuvor möglicherweise eine andere Aktivität zum Starten ausgewählt haben.

Klicken Sie auf Run > Edit configurationund stellen Sie sicher, dass Standardaktivität starten ausgewählt ist.

Starten Sie die Standardaktivität

Zeezer
quelle
Wenn es in AndroidManifest.xml keinen Absichtsfilter für den Launcher gibt, ist dies die Lösung.
Amir Fazwan
1
Dies gilt auch für Eclipse. Es reicht nicht aus, nur die Absichtsfilter anzugeben. Die Absichtsfilter werden verwendet, wenn die APK direkt vom Benutzer ausgeführt wird. Wenn die APK jedoch von Eclipse ausgeführt wird, der sie installiert, versucht sie, eine bestimmte Aktivität zu starten. Diese spezielle Aktivität wird unter "Projekteigenschaften" angegeben (Rechtsklick auf das Projekt) -> Einstellungen ausführen / debuggen.
Iker Jamardo Zugaza
Das ist großartig! Vielen Dank für den Tipp
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
quelle
18

Befolgen Sie die nachstehenden Anweisungen:

1 :) Öffne deine AndroidManifest.xmlDatei.

2 :) Gehen Sie zu dem Aktivitätscode, mit dem Sie Ihre Hauptaktivität wie unten festlegen möchten.

wie ich SplashScreen als Hauptaktivität machen möchte

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

3 :) Kopieren Sie nun den folgenden Code zwischen den Aktivitäts-Tags wie folgt:

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

Überprüfen Sie außerdem, ob neu hinzugefügte Zeilen nicht mit anderen Aktivitäts-Tags verknüpft sind.

Bhunnu Baba
quelle
17

Dies ist leicht zu beheben.

  • Änderungen an der Launcher-Aktivität werden auch in der Debug-Konfiguration gespeichert .
  • Gehen Sie zu Run > Debug Configurationsund bearbeiten Sie die Einstellung.
  • Es gibt auch eine ähnliche Einstellung in Intellij unter " Standardaktivität ausführen"Run > Edit Configurations , und die Einstellung wird auf diese Weise nicht mehr gespeichert .
user3154790
quelle
14

Es ist einfach. Tun Sie dies in Ihrer ManifestDatei.

<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
quelle
1
Sie sollten <category android: name = "android.intent.category.HOME" />
Behrouz.M
2
<category android:name="android.intent.category.DEFAULT" />, das ist
genau
1
android.intent.category.HOMEist für die Verwendung in einer Anwendung im Kiosk-Modus vorgesehen, in der der Standardstarter ersetzt wird. Wenn Sie dies verwenden, ohne den Launcher zu ersetzen, werden Sie beim Start von SystemUI gefragt, welcher Launcher verwendet werden soll. Siehe auch: 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>
Nullzeiger-Ausnahme
quelle
5

Gehen Sie einfach zu Ihrer AndroidManifest.xml-Datei und fügen Sie sie wie unten hinzu

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

Speichern Sie dann Ihr Android-Projekt und führen Sie es aus.

user3206168
quelle
3

Sie fügen dies hinzu, um Aktivität android:exported="true"in Manifestdatei wie zu starten

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

Öffnen Sie die Java-Datei dieser Aktivität und klicken Sie mit der rechten Maustaste. Klicken Sie dann auf "Hauptaktivität ausführen".

ODER

Öffnen Sie die Java-Datei dieser Aktivität und drücken Sie Ctrl+ Shift+ F10.

Prabh tief
quelle
Welchen Effekt hat das? Nur starten?
Chia Yongkang
2

In einem kürzlich durchgeführten Projekt habe ich die Standardaktivität in AndroidManifest.xml geändert mit:

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

In Android Studio 3.6; das scheint kaputt zu sein. Ich habe diese Technik in Beispielanwendungen verwendet, aber wenn ich sie in dieser realen Anwendung verwende, fällt sie flach. Die IDE meldet erneut:

Fehler beim Ausführen der App: Standardaktivität nicht gefunden.

Die IDE zeigte immer noch einen Konfigurationsfehler im Bereich "App ausführen" in der Symbolleiste an (gelber Pfeil in diesem Screenshot).

Fehler in der Konfiguration "App ausführen"

Um diesen Fehler zu beheben, habe ich mehrere Neuerstellungen des Projekts und schließlich Datei >> "Cache / Neustart ungültig machen" versucht . Das hat nicht geholfen. Um die Anwendung auszuführen, musste ich "Konfigurationen bearbeiten" und auf die spezifische Aktivität anstelle der Standardaktivität zeigen:

Konfigurationsdialogfeld bearbeiten

Marschall
quelle