Файл манифеста Android не получает активность по умолчанию при запуске - PullRequest
2 голосов
/ 13 декабря 2011

Если при настройке запуска / отладки указать активность запуска, приложение работает нормально, но когда я выбираю «Активность запуска по умолчанию», появляется сообщение «Активность запуска не обнаружена!» ошибка от Android ADB, несмотря на то, что я указал активность запуска в моем файле манифеста. Я использую Android 2.1.

Я попытался обновить файл / проект, очистить и перестроить, удалить файл и переписать его, создать новый проект и скопировать / вставить весь код, а затем выполнить Инструменты Android -> Исправить свойства проекта. Я пробовал Android Tools-> Rename Application Package, который предлагает мне обновить конфигурацию запуска проекта (на что я говорю да, но это все еще не решает проблему).

Я также пробовал разные устройства. Мое домашнее действие расширяет другое действие и находится в его собственном файле Home.java в моей папке src. Вот как выглядит мой файл манифеста:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.geogreenweb.localvore"
  android:versionCode="1"
  android:versionName="1.0">

<application 
    android:icon="@drawable/icon" 
    android:label="@string/general_app_name" 
    android:debuggable="true">

    <meta-data android:name="android.app.default_searchable"
           android:value=".localvorebeta6" />

    <activity android:name="com.geogreenweb.localvore.Home" 
              android:label="@string/general_app_name">

              <intent-filter>
              <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />                  
              <action android:name="android.intent.action.SEARCH" />
              </intent-filter>
              <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>


    </activity>

    <activity android:name="com.geogreenweb.localvore.Quit" 
              android:label="Quit">

    </activity>

    <activity android:name="com.geogreenweb.localvore.InSeason" 
              android:label="In Season">
              <intent-filter>                
              <action android:name="android.intent.action.SEARCH" />
              </intent-filter>
              <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>

    </activity>

    <activity android:name="com.geogreenweb.localvore.List" 
              android:label="A - Z">
              <intent-filter>                  
              <action android:name="android.intent.action.SEARCH" />
              </intent-filter>
              <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>

    </activity>

    <activity android:name="com.geogreenweb.localvore.Local" 
              android:label="Local"
              android:configChanges="orientation"
              android:windowSoftInputMode="stateHidden">
              <intent-filter>                  
              <action android:name="android.intent.action.SEARCH" />
              </intent-filter>
              <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>

    </activity>

    <activity android:name="com.geogreenweb.localvore.Details" 
              android:label="Details">
              <intent-filter>                  
              <action android:name="android.intent.action.SEARCH" />
              </intent-filter>
              <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>

    </activity>

    <activity android:name="com.geogreenweb.localvore.Search" 
              android:label="Search">
              <intent-filter>                  
              <action android:name="android.intent.action.SEARCH" />
              </intent-filter>
              <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>

    </activity>

    <activity android:name="com.geogreenweb.localvore.Map" 
              android:label="Map"
              android:windowSoftInputMode="stateHidden">
              <intent-filter>                  
              <action android:name="android.intent.action.SEARCH" />
              </intent-filter>
              <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>

    </activity>

    <activity android:name="com.geogreenweb.localvore.Help" 
              android:label="Help">
              <intent-filter>                  
              <action android:name="android.intent.action.SEARCH" />
              </intent-filter>
              <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>

    </activity>


</application>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    
<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk android:minSdkVersion="7" />
</manifest>

ОБНОВЛЕНИЕ: я изменил одну из меток активности, и в приложении появилась другая метка, поэтому изменения в файле манифеста подхватываются, но все равно я получаю сообщение об ошибке No Launch Activity

ОБНОВЛЕНИЕ 2: Мне удалось решить проблему, создав новый проект в конце, но только если я выберу опцию для создания действия при создании нового проекта, затем скопируйте / вставьте оставшуюся часть материала в проект

Ответы [ 3 ]

2 голосов
/ 13 февраля 2012

если вы удалите:

<action android:name="android.intent.action.SEARCH" />

запустится нормально. я не знаю почему .. это просто сработало для меня. я все еще ищу почему? !!

ОБНОВЛЕНИЕ 1: я нашел это:

Не найдена активность Launcher, несмотря на то, что она была объявлена ​​в manifest.xml до сих пор не знаю почему? .. все еще в поисках.

ОБНОВЛЕНИЕ 2: ПОЛУЧИЛ ЭТО!

http://developer.android.com/guide/topics/intents/intents-filters.html

Фильтр имеет поля, параллельные полям действий, данных и категорий объекта Intent. Неявное намерение проверяется против фильтра во всех трех областях. Для доставки в компонент, которому принадлежит фильтр, он должен пройти все три теста. Если произойдет сбой хотя бы одного из них, система Android не доставит его компоненту - по крайней мере, не на основе этого фильтра. Однако, поскольку компонент может иметь несколько фильтров намерений, намерение, которое не проходит через один из фильтров компонента, может пройти через другой.

в нашем случае это означает, что система отправляет намерение с действием MAIN и категорией LAUNCH. он находит следующее:

  1. ОСНОВНОЕ действие .............. [ pass ]
  2. Категория LAUNCH .... [ pass ]
  3. Действие ПОИСКА ......... [ сбой ]

но .. если вы поместите действие ПОИСК в другое, критерии, содержащие MAIN и LAUNCHER, пройдут.

2 голосов
/ 13 декабря 2011

Единственное, о чем я могу думать, это строки

<activity android:name="com.geogreenweb.localvore.Home" 

Попробуйте использовать просто

<activity android:name=".Home" 

вместо

1 голос
/ 14 декабря 2011

Попробуйте добавить следующее в ваш основной модуль запуска Activity рядом с элементом категории модуля запуска.

<category android:name="android.intent.category.DEFAULT"/>
...