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!
Veer
quelle

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>
dbryson
quelle
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.

Gusdor
quelle
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!

David bei HotspotOffice
quelle
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>
Stamm84
quelle
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>
SteD
quelle
6

Dies bedeutet, dass Sie keine Aktivität für Android angegeben haben, die standardmäßig gestartet werden soll, wenn die App über den Launcher geöffnet wird. Sie müssen dem Manifest einen Absichtsfilter für die Aktivität hinzufügen, die Sie beim Start der App als Standard verwenden möchten.

Weitere Informationen finden Sie unter http://developer.android.com/guide/topics/intents/intents-filters.html#ccases .

Jason Knight
quelle
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.

bilalhaider
quelle
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 .

ChrisF
quelle
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.

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

Mithun
quelle
2

Wann kann Eclipse dies tun?

Geben Sie hier die Bildbeschreibung ein

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

InfZero
quelle
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" />
Karan
quelle
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 ..


quelle
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" />
Zubair
quelle
1

Sie können der Aktivität im visuellen Editor des Eclipse-Manifests einen Starter hinzufügen:

Der Abschnitt Anwendungsknoten sollte folgendermaßen aussehen:

Wegen Negativität gelöscht
quelle
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>
yousafsajjad
quelle
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

Schwarzer Falke
quelle