2011-12-13 69 views
2

如果在运行/调试配置中,如果我指定启动活动,那么我的应用运行良好,但是当选择“启动默认活动”时,我会得到“No Launcher activity found!”尽管我已经在清单文件中指定了启动活动,但仍然出现了来自android adb的错误。我正在使用android 2.1。Android清单文件未拾取默认启动活动

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

我也试过不同的设备。我的主页活动扩展了另一个活动,并位于我的src文件夹中的Home.java文件中。这是我的manifest文件的样子:

<?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:我设法通过最终创建一个新项目来解决问题,但只有在选择创建新项目时创建活动的选项,然后复制/粘贴到其余的东西纳入项目

+0

我应该补充说,当我更改并保存清单文件时,我可以看到eclipse(重新)在后台构建项目。但是,它没有给我“启动配置更新”对话框:http://img855.imageshack.us/img855/2448/launchconfigchanges.png(仅当我尝试更改软件包名称时出现,如上例所示) –

回答

2

如果去掉:

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

它会正常启动。 我不知道为什么..它只是为我工作。我仍然在寻找为什么?!

更新1: 我发现这一点:

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

UPDATE 2:GOT IT!

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

甲滤波器具有平行的动作,数据,和类别的意图对象的字段的字段。在所有三个方面都针对过滤器测试了一个隐含的意图。要传递给拥有过滤器的组件,它必须通过所有三个测试。如果即使其中一个失败,Android系统也不会将其交付给组件 - 至少不会基于该过滤器。但是,由于组件可以有多个意向过滤器,因此不通过组件过滤器之一的意向可能会通过另一个过滤器。

在我们的情况下,这意味着系统发送一个意图与MAIN动作和LAUNCH类别。找到一个与下列:

  1. MAIN动作.............. []
  2. 征类别.... []
  3. 搜索行动......... [失败]

但..如果你把在其他的搜索行动中,包含主和启动标准通过。

2

我能想到的唯一的东西是行

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

尝试使用刚刚

<activity android:name=".Home" 

代替

+0

没有工作不幸:( –

+0

好的,你的活动名为Home,而不是家? –

+0

'Home extends MenuActivity',Home.java。MenuActivity是抽象的,所以它不在我的清单中。文件,没有解决问题 –

1

尝试添加以下到您的主发射Activity旁边的发射类别元素。

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

也没有工作,我尝试改变操作元素中类别和操作元素的顺序,即使在理论上它应该不重要。 –