Что означает «Действия в программе запуска не обнаружены!»


82

Я пишу простую программу для Android и не получаю ошибок, я не знаю, что это такое. Моя программа верна, но не выводит результат. Я думаю, это из-за этих двух строк:

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

Ответы:


158

Вот пример из AndroidManifest.xml. Вам необходимо указать ГЛАВНЫЙ и ЗАПУСК в фильтре намерений для действия, которое вы хотите начать при запуске.

<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
Они всегда будут выглядеть именно так, это не классы в вашем приложении, это действия, которые происходят. Точно так же вы можете активировать действие для других действий. например, <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

«В основном» помогают Android решить, что делать с Activity. См. Раздел Intent в документации
dbryson

2
Чтобы не забыть изменить значение этого атрибута android:name="ExampleActivity"на соответствующий основной класс активности.
Омар

51

Несколько тегов действий в одном теге фильтра намерений также вызовут ту же ошибку.


Я получил отрицательный голос. Может ли кто-нибудь подтвердить, был ли устранен этот симптом? Мне всегда казалось, что это ошибка.
Gusdor

24

Как сказал Гусдор выше, «несколько тегов действий в одном теге фильтра намерений также вызовут ту же ошибку». (Воздайте ему должное! Я мог бы просто поцеловать Гусдора за это!)
Я не нашел никаких документов для этого факта! Я добавил новое действие (USB) и, будучи умным, поместил его в тот же фильтр намерений. И это сломало запуск. Как сказал Гусдор, один фильтр намерений, одно действие! Очевидно, каждое действие должно идти в собственном фильтре намерений.
Это должно выглядеть так ...

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

Когда я это сделал, WAZOO! это сработало!


Я искал это
Виджай

17

Есть ли у вас действие, которое будет запускаться при запуске приложения?

Это делается в вашем файле Manifest.xml, например:

    <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

Проверьте свой manifest.xml. Убедитесь, что у вас есть категория 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>

6

Это означает, что вы не указали действие для Android, которое будет запускаться по умолчанию при открытии приложения из средства запуска. Вы должны добавить фильтр намерений в манифест для действия, которое вы хотите использовать по умолчанию при запуске приложения.

Прочтите http://developer.android.com/guide/topics/intents/intents-filters.html#ccases для получения дополнительных сведений.


5

Я исправил проблему, добавив блок активности в тег приложения. Я создал проект с помощью мастера, я не знаю, почему мой файл AdroidManifest.xml не содержал блок приложения? Я добавил блок приложения:

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

И я получаю желаемый результат на эмуляторе.


5

Как уже указывалось, эта ошибка, вероятно, вызвана отсутствием или ошибкой intent-filter.

Я просто хотел бы добавить, что эта ошибка также появляется, если вы устанавливаете android:exported="false"активность своей пусковой установки (в манифесте).


Это действительно была моя проблема.
bvd 06

2

У меня была такая же проблема, и оказалось, что у меня в теге xml был знак «\» вместо «/». Он по-прежнему выдавал ту же ошибку, но только из-за синтаксической проблемы.


2

Если вы используете стандартную среду разработки eclipse, предоставляемую Google для разработки под Android, вы можете установить флажок «Активность запуска» при создании нового действия. Пожалуйста, посмотрите ниже:

введите описание изображения здесь


2

В Eclipse, когда это можно сделать:

введите описание изображения здесь

Но желательно внести соответствующие изменения в файл манифеста Android.


1

просто добавьте это в свой тег приложения в файле AndroidManifest.xml

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

а также измените тег uses-sdk с android: targetSdkVersion = "16" на 17

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

1

Вы пропустили указание элементов фильтра намерений в файле манифеста. Файл манифеста:

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

Добавьте и проверьте это правильно. Надеюсь, это поможет ..


1

В манифесте учитывается регистр, поэтому, пожалуйста, сравните эти строки на предмет несоответствия регистра, особенно слова MAINв:

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


1

MAIN определит первое действие, которое будет использоваться при запуске приложения. Launcher добавит приложение на панель инструментов приложения.

Если они у вас уже есть, и вы все еще получаете сообщение об ошибке, но, возможно, это связано с тем, что вы можете использовать более чем больше категорий или действий в фильтре намерений. В фильтре намерений может быть только один такой тег. Чтобы добавить еще одну категорию, поместите ее в другой фильтр намерений, например следующий

        <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

Вы не включили фильтр намерения пусковой установки в действие, которое хотите отобразить первым, поэтому он не знает, какое действие начинать при запуске приложения, для этого сообщите системе, включив намерение фильтра пусковой установки в manifest.xml.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.