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.