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!

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>

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.


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!


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>

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>


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.


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


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


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


2

W Eclipse, kiedy można to zrobić:

wprowadź opis obrazu tutaj

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


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

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


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


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>

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.