Android清单文件未拾取默认启动活动
如果在运行/调试配置中,如果我指定了启动活动,则我的应用程序运行良好,但当我选择“启动默认活动”时,我从android adb获得“未找到启动程序活动!”错误,尽管我已在清单文件中指定了启动活动。我使用的是安卓2.1 我尝试过刷新文件/项目、清理和重建、删除文件并重新编写、创建新项目、复制/粘贴所有代码,以及执行Android工具->修复项目属性。我已经尝试过Android工具->重命名应用程序包,它会提示我更新项目启动配置(我说是的,但它仍然不能解决问题) 我也尝试过不同的设备。My Home活动扩展了另一个活动,并位于My src文件夹中自己的Home.java文件中。这是我的清单文件的外观:Android清单文件未拾取默认启动活动,android,eclipse,android-manifest,android-sdk-2.1,Android,Eclipse,Android Manifest,Android Sdk 2.1,如果在运行/调试配置中,如果我指定了启动活动,则我的应用程序运行良好,但当我选择“启动默认活动”时,我从android adb获得“未找到启动程序活动!”错误,尽管我已在清单文件中指定了启动活动。我使用的是安卓2.1 我尝试过刷新文件/项目、清理和重建、删除文件并重新编写、创建新项目、复制/粘贴所有代码,以及执行Android工具->修复项目属性。我已经尝试过Android工具->重命名应用程序包,它会提示我更新项目启动配置(我说是的,但它仍然不能解决问题) 我也尝试过不同的设备。My Home
<?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:我最终通过创建一个新项目解决了这个问题,但前提是我在创建新项目时选择了创建活动的选项,然后将其余内容复制/粘贴到项目中我唯一能想到的就是行
<activity android:name="com.geogreenweb.localvore.Home"
尝试将以下内容添加到主启动器活动
的启动器类别元素旁边
<category android:name="android.intent.category.DEFAULT"/>
如果您卸下:
<action android:name="android.intent.action.SEARCH" />
还是不知道为什么。。还在找呢
更新2:明白了强>
筛选器具有与意图对象的操作、数据和类别字段并行的字段。隐式意图在所有三个方面都通过过滤器进行测试。要交付给拥有过滤器的组件,它必须通过所有三个测试。如果哪怕其中一个都失败了,Android系统也不会将其交付给组件——至少不会基于该过滤器。然而,由于一个组件可以有多个意图过滤器,一个未通过组件过滤器的意图可能会通过另一个过滤器
在我们的例子中,这意味着系统发送带有主操作和启动类别的意图。它会找到一个具有以下内容的:
主要行动…………[通过]
发布类别。。。。[通过]
搜索操作………[失败]
但是。。如果将搜索操作放在另一个中,则包含主条件和启动器条件的将通过。Home扩展了MenuActivity
,Home.java。MenuActivity是抽象的,所以它不在我的清单中。但是,将其添加到清单文件并不能解决问题,也无法工作。我试着在动作元素中改变类别和动作元素的顺序,即使在理论上这不重要。这没有什么区别,我应该补充一点,当我更改并保存清单文件时,我可以看到eclipse在后台重新构建项目。但是,它没有给我“启动配置更新”对话框:(仅在我尝试更改包名时出现,如上面的示例所示)
<action android:name="android.intent.action.SEARCH" />