Android清单文件没有提取默认启动活动

时间:2011-12-13 14:02:11

标签: android eclipse android-manifest android-sdk-2.1

如果在运行/调试配置中,如果我指定了启动活动,那么我的应用运行正常,但是当我选择“启动默认活动”时,我会收到“未找到启动器活动!”尽管事实上我在清单文件中指定了启动活动,但是来自android adb的错误。我正在使用android 2.1。

我尝试刷新文件/项目,清理并重建,删除文件并重新编写文件,创建新项目并复制/粘贴所有代码并执行Android工具 - >修复项目属性。我试过Android工具 - >重命名应用程序包,它会提示我更新项目启动配置(我说是的,但它仍然无法解决问题)。

我也尝试过不同的设备。 My Home活动扩展了另一个活动,并且位于我的src文件夹中的自己的Home.java文件中。这就是我的清单文件:

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

更新:我更改了其中一个活动标签,并在应用程序中显示了不同的标签,因此正在拾取清单文件的更改,但仍然会收到“无启动活动”错误

更新2:我设法通过最终创建一个新项目来解决问题,但前提是我在制作新项目时选择了创建活动的选项,然后将剩下的内容复制/粘贴到项目

3 个答案:

答案 0 :(得分:2)

我唯一能想到的就是线条

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

尝试使用

<activity android:name=".Home" 

代替

答案 1 :(得分:2)

如果您删除:

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

它会正常启动。 我不知道为什么......它只对我有用。我还在寻找原因?!!

更新1: 我发现了这个:

No Launcher activity found, despite being declared in manifest.xml 还是不知道为什么? ..还在寻找它。

更新2: GOT IT!

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

  

过滤器具有与Intent对象的操作,数据和类别字段并行的字段。在所有三个区域中针对过滤器测试隐式意图。要传递给拥有过滤器的组件,它必须通过所有三个测试。如果它甚至其中一个失败,Android系统将不会将其传递给组件 - 至少不是基于该过滤器。但是,由于组件可以有多个intent过滤器,因此不通过组件过滤器之一的intent可能会在另一个过滤器上通过。

在我们的例子中,这意味着系统使用MAIN操作和LAUNCH类别发送意图。它找到了以下内容:

  1. 主要行动.............. [传递]
  2. LAUNCH类别.... [传递]
  3. 搜寻行动......... [失败]
  4. 但..如果你把SEARCH动作放在另一个动作中,那么包含MAIN和LAUNCHER标准就会通过。

答案 2 :(得分:1)

尝试将以下内容添加到启动器类别元素旁边的主启动器Activity

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