Co to znaczy „Nie znaleziono aktywności Launchera!”

82

Piszę prosty program na Androida i nie otrzymuję tych błędów, nie wiem, co to za. Mój program jest poprawny, ale nie pokazuje wyjścia. Myślę, że to z powodu tych dwóch linii:

[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!
Skręcać
źródło

Odpowiedzi:

158

Oto przykład z AndroidManifest.xml. Musisz określić GŁÓWNY i WYRUSZNIK w filtrze intencji dla działania, które chcesz rozpocząć po uruchomieniu

<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
źródło
6
Te zawsze będą wyglądać dokładnie tak, to nie są klasy w twojej aplikacji, to akcje, które się dzieją. Podobnie możesz uruchomić Aktywność przy innych akcjach. na przykład <action android: name = "android.intent.action.VIEW"> </action> <category android: name = "android.intent.category.DEFAULT"> </category> <category android: name = "android .intent.category.BROWSABLE "> </category>
tribe84
„Zasadniczo” pomaga Androidowi zdecydować, co zrobić z działaniem. Zobacz sekcję Intent w dokumentach
dbryson,
2
Nie zapomnij zmodyfikować wartości tego atrybutu android:name="ExampleActivity"na odpowiednią klasę główną aktywności.
Omar
51

Wiele tagów działań w jednym tagu filtra intencji również spowoduje ten sam błąd.

Gusdor
źródło
Otrzymałem głos przeciw. Czy ktoś może potwierdzić, czy ten objaw został naprawiony? Zawsze wydawało mi się, że to błąd.
Gusdor
24

Jak powiedział Gusdor powyżej, „Wiele tagów działań w jednym tagu filtra intencji spowoduje również ten sam błąd”. (Daj mu uznanie! Mogę po prostu pocałować za to Gusdora!)
Nie znalazłem żadnych dokumentów na ten fakt! Dodałem nową akcję (USB) i będąc sprytnym, umieściłem ją w tym samym filtrze intencji. I to zepsuło start. Jak powiedział Gusdor, jeden filtr intencji, jedno działanie! Najwyraźniej każde działanie powinno mieć swój własny filtr intencji.
To powinno wyglądać tak...

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

Kiedy to zrobiłem, WAZOO! zadziałało!

David w HotspotOffice
źródło
Szukałem tego
Vijay
17

Czy masz skonfigurowane działanie, które ma być uruchomione podczas uruchamiania aplikacji?

Odbywa się to w pliku Manifest.xml, na przykład:

    <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>
plemię84
źródło
8

Sprawdź swój plik manifest.xml. Upewnij się, że masz tam kategorię LAUNCHER.

<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
źródło
6

Oznacza to, że nie określono działania dla systemu Android, które ma być uruchamiane jako domyślne, gdy aplikacja otwiera się z programu uruchamiającego. Musisz dodać filtr intencji w manifeście dla działania, które chcesz zachować jako domyślny podczas uruchamiania aplikacji.

Przeczytaj http://developer.android.com/guide/topics/intents/intents-filters.html#ccases, aby uzyskać więcej informacji.

Jason Knight
źródło
5

Naprawiłem problem, dodając blok aktywności w tagu aplikacji. Stworzyłem projekt za pomocą kreatora, nie wiem, dlaczego mój plik AdroidManifest.xml nie zawierał bloku aplikacji? Dodałem blok aplikacji:

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

I otrzymuję żądane wyjście na emulatorze.

bilalhaider
źródło
5

Jak już wspomniano, ten błąd jest prawdopodobnie spowodowany brakiem lub nieprawidłowym plikiem intent-filter.

Chciałbym tylko dodać, że ten błąd pojawia się również, jeśli ustawisz android:exported="false"aktywność programu uruchamiającego (w manifeście).

ChrisF
źródło
To był rzeczywiście mój problem.
bvd
2

Miałem ten sam problem i okazuje się, że w tagu xml miałem znak „\” zamiast „/”. Nadal dawał ten sam błąd, ale tylko z powodu problemu ze składnią.

jgelderloos
źródło
2

Jeśli używasz standardowego środowiska eclipse IDE dostarczonego przez Google do programowania w systemie Android, możesz zaznaczyć pole wyboru „Aktywność programu uruchamiającego” podczas tworzenia nowego działania. Proszę znaleźć poniżej:

wprowadź opis obrazu tutaj

Mithun
źródło
2

W Eclipse, kiedy można to zrobić:

wprowadź opis obrazu tutaj

Ale lepiej jest wprowadzić odpowiednie zmiany w pliku manifestu Androida.

InfZero
źródło
1

po prostu dodaj to do tagu aplikacji w pliku AndroidManifest.xml

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

a także edytuj tag uses-sdk z android: targetSdkVersion = "16" na 17

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />
Karan
źródło
1

Brakowało Ci określania elementów filtru intencji w pliku manifestu. Plik manifestu to:

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

Dodaj i sprawdź to poprawnie. Mam nadzieję, że to pomoże ...


źródło
1

W manifestie rozróżniana jest wielkość liter, więc porównaj te wiersze pod kątem niezgodności wielkości liter, zwłaszcza słowa MAINw:

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
Zubair
źródło
1

Możesz dodać program uruchamiający do aktywności w edytorze wizualnym manifestu zaćmienia:

Sekcja węzłów aplikacji powinna wyglądać następująco:

Usunięto z powodu negatywnych opinii
źródło
1

MAIN zadecyduje o pierwszym działaniu, które zostanie użyte, gdy aplikacja zostanie uruchomiona. Launcher doda aplikację w panelu aplikacji.

Jeśli już je masz i nadal otrzymujesz komunikat o błędzie, ale może to dlatego, że możesz używać więcej niż więcej kategorii lub akcji w filtrze intencji. W filtrze intencji może istnieć tylko jeden taki tag. Aby dodać kolejną kategorię, umieść ją w innym filtrze intencji, jak poniżej

        <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
źródło
0

Nie włączyłeś filtra intencji Launchera do działania, które chcesz wyświetlić jako pierwsze, więc nie wie, które działanie ma się rozpocząć po uruchomieniu aplikacji, w tym celu poinformuj system, dołączając intencję filtra programu uruchamiającego do manifest.xml

czarny Jastrząb
źródło