¿Qué significa "No se encontró actividad del Lanzador"?

82

Estoy escribiendo un programa simple de Android, y no obtengo estos errores, no sé cuáles son. Mi programa es correcto, pero no muestra salida. Creo que es por estas dos líneas:

[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!
Virar
fuente

Respuestas:

158

Aquí tienes un ejemplo de AndroidManifest.xml. Debe especificar el PRINCIPAL y el LANZADOR en el filtro de intención para la actividad que desea comenzar en el lanzamiento

<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
fuente
6
Esas siempre se verán exactamente así, no son clases en su aplicación, son acciones que están sucediendo. Del mismo modo, puede activar una actividad en otras acciones. por ejemplo, <action android: name = "android.intent.action.VIEW"> </action> <category android: name = "android.intent.category.DEFAULT"> </category> <categoría android: name = "android .intent.category.BROWSABLE "> </category>
tribe84
Los "básicamente" ayudan a Android a decidir qué hacer con la actividad. Consulte la sección Intención de los documentos
dbryson
2
No olvide modificar el valor de este atributo android:name="ExampleActivity"a la clase principal de actividad adecuada.
Omar
51

Varias etiquetas de acción en una sola etiqueta de filtro de intención también causarán el mismo error.

Gusdor
fuente
Recibí un voto negativo. ¿Alguien puede confirmar si este síntoma se ha solucionado? Siempre me pareció un error.
Gusdor
24

Como dijo Gusdor anteriormente, "Varias etiquetas de acción en una sola etiqueta de filtro de intención también causarán el mismo error". (¡Dale el crédito! ¡Podría besar a Gusdor por esto!)
¡No encontré ningún documento para este hecho! Había agregado una nueva acción (USB) y, siendo inteligente, la agrupé en el mismo filtro de intención. Y rompió el lanzamiento. Como dijo Gusdor, ¡un filtro de intención, una acción! Aparentemente, cada acción debe ir en su propio filtro de intención.
Debe tener un aspecto como este...

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

Cuando hice esto, ¡WAZOO! ¡funcionó!

David en HotspotOffice
fuente
Estaba buscando esto
Vijay
17

¿Tiene una actividad configurada que sea la actividad iniciada cuando se inicie la aplicación?

Esto se hace en su archivo Manifest.xml, algo como:

    <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>
tribe84
fuente
8

Verifique su manifest.xml. Asegúrate de tener la categoría LANZADOR allí.

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

Significa que no especificó una Actividad para que Android se inicie como predeterminada cuando la aplicación se abre desde el iniciador. Debe agregar un filtro de intención en el manifiesto para la actividad que desea que actúe como predeterminado cuando se inicie la aplicación.

Lea http://developer.android.com/guide/topics/intents/intents-filters.html#ccases para obtener más detalles.

Jason Knight
fuente
5

Solucioné el problema agregando un bloque de actividad en la etiqueta de la aplicación. Creé el proyecto usando el asistente, no sé por qué mi archivo AdroidManifest.xml no contenía un bloque de aplicación. Agregué el bloque de la aplicación:

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

Y obtengo la salida deseada en el emulador.

bilalhaider
fuente
5

Como se ha señalado, este error probablemente se deba a que falta o es incorrecto intent-filter.

Solo me gustaría agregar que este error también aparece si configura android:exported="false"su actividad de iniciador (en el manifiesto).

ChrisF
fuente
Este era de hecho mi problema.
bvd
2

Tuve el mismo problema y resultó que tenía un '\' en lugar de un '/' en la etiqueta xml. Todavía dio el mismo error pero solo debido a un problema de sintaxis.

jgelderloos
fuente
2

Si está utilizando el IDE de eclipse estándar proporcionado por Google para el desarrollo de Android, puede marcar la casilla de verificación "Actividad del lanzador" mientras crea una nueva actividad. Por favor encuentre abajo:

ingrese la descripción de la imagen aquí

Mithun
fuente
2

En Eclipse cuando puedo hacer esto:

ingrese la descripción de la imagen aquí

Pero es preferible realizar los cambios correspondientes dentro del archivo de manifiesto de Android.

InfZero
fuente
1

simplemente agregue esto a su etiqueta de aplicación en el archivo AndroidManifest.xml

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

y también edite la etiqueta uses-sdk de android: targetSdkVersion = "16" a 17

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

No pudo especificar los elementos del filtro de intención en su archivo de manifiesto. El archivo de manifiesto es:

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

Agregue y verifique esto correctamente. Espero que esto ayude ...


fuente
1

El manifiesto distingue entre mayúsculas y minúsculas, así que compare estas líneas para detectar cualquier discrepancia entre mayúsculas y minúsculas, especialmente la palabra MAINen:

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

Puede agregar un lanzador a la actividad en el editor visual de manifiesto de eclipse:

La sección Nodos de aplicación debería verse así:

Eliminado por negatividad
fuente
1

MAIN decidirá la primera actividad que se utilizará cuando se inicie la aplicación. El lanzador agregará una aplicación en el panel de la aplicación.

Si ya los tiene y todavía recibe el mensaje de error, pero tal vez sea porque podría estar usando más que más categorías o acciones en un filtro de intención. En un filtro de intención, solo puede haber una de esas etiquetas. Para agregar otra categoría, colóquela en otro filtro de intención, como el siguiente

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

No ha incluido el filtro de intención del lanzador en la actividad que desea que aparezca primero, por lo que no sabe qué actividad iniciar cuando se inicia la aplicación, para esto, dígale al sistema incluyendo la intención del filtro del lanzador en manifest.xml

BlackHawk
fuente