【问题标题】:Android Manifest File Not Picking Up Default Launch ActivityAndroid 清单文件未获取默认启动活动
【发布时间】:2011-12-13 14:02:11
【问题描述】:

如果在运行/调试配置中,如果我指定启动活动,那么我的应用程序运行良好,但是当我选择“启动默认活动”时,我得到“未找到启动器活动!”尽管我已经在清单文件中指定了启动活动,但来自 android adb 的错误。我使用的是安卓 2.1。

我尝试过刷新文件/项目、清理和重建、删除文件并重新编写、创建新项目并复制/粘贴所有代码并执行 Android 工具 -> 修复项目属性。我已经尝试过 Android Tools-> Rename Application Package,它提示我更新项目启动配置(我说是,但它仍然不能解决问题)。

我也尝试过不同的设备。我的 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>

更新:我更改了其中一个活动标签,并且应用程序中出现了不同的标签,因此正在获取对清单文件的更改,但我仍然收到 No Launch Activity 错误

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

【问题讨论】:

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

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


【解决方案1】:

如果你删除:

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

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

更新 1: 我发现了这个:

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

更新 2:明白了!

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

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

在我们的例子中,这意味着系统发送一个带有 MAIN 动作和 LAUNCH 类别的意图。它找到一个具有以下内容的:

  1. 主要行动........[通过]
  2. LAUNCH 类别 .... [通过]
  3. 搜索操作.......[失败]

但是..如果您将 SEARCH 操作放在另一个中,则包含 MAIN 和 LAUNCHER 标准的通过。

【讨论】:

    【解决方案2】:

    我唯一能想到的就是线条

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

    尝试只使用

    <activity android:name=".Home" 
    

    改为

    【讨论】:

    • Home extends MenuActivity, Home.java。 MenuActivity 是抽象的,所以它不在我的清单中。但是,将其添加到清单文件中并没有解决问题
    【解决方案3】:

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

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

    【讨论】:

    • 也没有用。我尝试更改 action 元素中的 category 和 action 元素的顺序,即使理论上它应该无关紧要。这也没有什么不同
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多