Was bedeutet es? "Keine Launcher-Aktivität gefunden!"


82

Ich schreibe ein einfaches Programm für Android und bekomme keine Fehler, ich weiß nicht, was sie sind. Mein Programm ist richtig, zeigt aber keine Ausgabe. Ich denke, das liegt an diesen beiden Zeilen:

[2005-01-06 19:56:38 - my_Android] No Launcher activity found!
[2005-01-06 19:56:38 - my_Android] The launch will only sync the application package on the device!

Antworten:


158

Hier ist ein Beispiel aus AndroidManifest.xml. Sie müssen MAIN und LAUNCHER im Intent-Filter für die Aktivität angeben, die Sie beim Start starten möchten

<application android:label="@string/app_name" android:icon="@drawable/icon">
    <activity android:name="ExampleActivity"
              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>

6
Diese sehen immer genau so aus, sie sind keine Klassen in Ihrer Anwendung, sondern Aktionen, die gerade ausgeführt werden. Ebenso können Sie ein Aktivitätsfeuer für andere Aktionen auslösen. Zum Beispiel <action android: name = "android.intent.action.VIEW"> </ action> <category android: name = "android.intent.category.DEFAULT"> </ category> <category android: name = "android .intent.category.BROWSABLE "> </ category>
stem84

Das "im Grunde" hilft Android bei der Entscheidung, was mit der Aktivität geschehen soll. Siehe den Abschnitt Absicht der Dokumente
dbryson

2
Um nicht zu vergessen, den Wert dieses Attributs android:name="ExampleActivity"in die richtige Aktivitätshauptklasse zu ändern .
Omar

51

Mehrere Aktions-Tags in einem einzelnen Intent-Filter-Tag verursachen denselben Fehler.


Ich habe eine Gegenstimme erhalten. Kann jemand bestätigen, ob dieses Symptom behoben wurde? Es fühlte sich für mich immer wie ein Käfer an.
Gusdor

24

Wie Gusdor oben sagte, "verursachen mehrere Aktions-Tags in einem einzelnen Intent-Filter-Tag denselben Fehler." (Gib ihm die Ehre! Ich könnte Gusdor dafür einfach küssen!)
Ich habe keine Dokumente für diese Tatsache gefunden! Ich hatte eine neue (USB) Aktion hinzugefügt und da ich klug war, habe ich sie im selben Absichtsfilter zusammengefasst. Und es brach den Start. Wie Gusdor sagte, ein Absichtsfilter, eine Aktion! Anscheinend sollte jede Aktion in einem eigenen Absichtsfilter ausgeführt werden.
Es sollte so aussehen...

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

Als ich das tat, WAZOO! es funktionierte!


Ich habe danach gesucht
Vijay

17

Haben Sie eine Aktivität eingerichtet, die beim Start der Anwendung als Aktivität gestartet wird?

Dies geschieht in Ihrer Manifest.xml-Datei, etwa wie folgt:

    <activity android:name=".Main" android:label="@string/app_name"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

8

Überprüfen Sie Ihre manifest.xml. Stellen Sie sicher, dass Sie dort die Kategorie LAUNCHER haben.

<activity android:name=".myActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />

        </intent-filter>
    </activity>


5

Ich habe das Problem behoben, indem ich dem Anwendungs-Tag einen Aktivitätsblock hinzugefügt habe. Ich habe das Projekt mit dem Assistenten erstellt. Ich weiß nicht, warum meine Datei AdroidManifest.xml keinen Anwendungsblock enthielt. Ich habe den Anwendungsblock hinzugefügt:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".ToDoListActivity"
        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>

Und ich bekomme die gewünschte Ausgabe auf dem Emulator.


5

Wie bereits erwähnt, wird dieser Fehler wahrscheinlich durch einen fehlenden oder falschen Fehler verursacht intent-filter.

Ich möchte nur hinzufügen, dass dieser Fehler auch auftritt, wenn Sie android:exported="false"Ihre Launcher-Aktivität (im Manifest) festlegen .


Das war in der Tat mein Problem.
bvd

2

Ich hatte das gleiche Problem und es stellte sich heraus, dass ich ein '\' anstelle eines '/' im XML-Tag hatte. Es gab immer noch den gleichen Fehler, aber nur aufgrund eines Syntaxproblems.


2

Wenn Sie die von Google für die Android-Entwicklung bereitgestellte Standard-Eclipse-IDE verwenden, können Sie das Kontrollkästchen "Aktivität starten" aktivieren, während Sie eine neue Aktivität erstellen. Bitte finde unten:

Geben Sie hier die Bildbeschreibung ein


2

Wann kann Eclipse dies tun?

Geben Sie hier die Bildbeschreibung ein

Es ist jedoch vorzuziehen, die entsprechenden Änderungen in der Android-Manifestdatei vorzunehmen.


1

Fügen Sie dies einfach Ihrem Anwendungstag in der Datei AndroidManifest.xml hinzu

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

und bearbeiten Sie auch das use-sdk-Tag von Android: targetSdkVersion = "16" bis 17

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

1

Sie haben bei der Angabe der Absichtsfilterelemente in Ihrer Manifestdatei versäumt. Die Manifestdatei lautet:

<application android:label="@string/app_name" android:icon="@drawable/icon">
    <activity android:name="Your Activity Name"
              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>

Fügen Sie dies hinzu und überprüfen Sie es richtig. Hoffe das wird helfen ..


1

Das Manifest unterscheidet zwischen Groß- und Kleinschreibung. Vergleichen Sie diese Zeilen daher auf mögliche Fehlanpassungen, insbesondere das Wort MAINin:

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


1

MAIN entscheidet über die erste Aktivität, die beim Start der Anwendung verwendet wird. Launcher fügt eine Anwendung im Anwendungs-Dashboard hinzu.

Wenn Sie sie bereits haben und immer noch die Fehlermeldung erhalten, liegt dies möglicherweise daran, dass Sie möglicherweise mehr als mehr Kategorien oder Aktionen in einem Absichtsfilter verwenden. In einem Absichtsfilter kann es nur ein solches Tag geben. Um eine weitere Kategorie hinzuzufügen, fügen Sie sie wie folgt in einen anderen Absichtsfilter ein

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

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

        <!--
             TODO - Add necessary intent filter information so that this
                Activity will accept Intents with the
                action "android.intent.action.VIEW" and with an "http"
                schemed URL
        -->
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="http" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>

0

Sie haben den Launcher-Absichtsfilter nicht in die Aktivität aufgenommen, die zuerst angezeigt werden soll, sodass nicht bekannt ist, welche Aktivität beim Starten der Anwendung gestartet werden soll. Dies wird dem System mitgeteilt, indem die Launcher-Filterabsicht in die Datei manifest.xml aufgenommen wird

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.