【问题标题】:What does it mean "No Launcher activity found!"“未找到启动器活动!”是什么意思?
【发布时间】:2011-01-26 04:17:50
【问题描述】:

我正在编写一个简单的Android程序,并且没有出现这些错误,我不知道它们是什么。我的程序是正确的,但显示不输出。 我认为是因为这两行:

[2005-01-06 19:56:38 - my_Android] No Launcher activity found!
[2005-01-06 19:56:38 - my_Android] The launch will only sync the application package on the device!

【问题讨论】:

    标签: android eclipse


    【解决方案1】:

    这是来自 AndroidManifest.xml 的示例。您需要在意图过滤器中为要在启动时启动的活动指定 MAIN 和 LAUNCHER

    <application android:label="@string/app_name" android:icon="@drawable/icon">
        <activity android:name="ExampleActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    

    【讨论】:

    • 那些看起来总是一模一样,它们不是应用程序中的类,它们是正在发生的动作。同样,您可以在其他操作上触发 Activity。例如
    • “基本上”帮助 Android 决定如何处理 Activity。请参阅文档的意图部分
    • 不要忘记将android:name="ExampleActivity"这个属性的值修改为适当的活动主类。
    【解决方案2】:

    单个意图过滤器标签中的多个操作标签也会导致相同的错误。

    【讨论】:

    • 我收到了反对票。任何人都可以确认此症状是否已修复?对我来说,这总是一个错误。
    • 有点晚了,但我可以确认这还没有修复。我在同一个意图过滤器中添加了 VIEW 和 INSERT 操作,启动器无法识别该活动。重构为多个意图过滤器修复了它。
    【解决方案3】:

    就像 Gusdor 上面所说的,“单个意图过滤器标签中的多个操作标签也会导致相同的错误。” (相信他!我可以为此亲吻古斯多!)
    我没有找到任何关于这个事实的文档! 我添加了一个新的(USB)动作并且很聪明,我将它集中在同一个意图过滤器中。它打破了发射。 就像 Gusdor 所说,一个意图过滤器,一个动作! 显然,每个动作都应该放在自己的意图过滤器中。
    它应该看起来像这样......

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
      <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
    </intent-filter>
    

    当我这样做时,WAZOO!成功了!

    【讨论】:

    • 我在找这个
    【解决方案4】:

    您是否有一个活动设置为应用程序启动时启动的活动?

    这是在您的 Manifest.xml 文件中完成的,类似于:

        <activity android:name=".Main" android:label="@string/app_name"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    

    【讨论】:

      【解决方案5】:

      检查您的 manifest.xml。确保那里有 LAUNCHER 类别。

      <activity android:name=".myActivity"
              android:label="@string/app_name">
              <intent-filter>
                  <action android:name="android.intent.action.MAIN" />
                  <category android:name="android.intent.category.LAUNCHER" />
      
              </intent-filter>
          </activity>
      

      【讨论】:

        【解决方案6】:

        这意味着当应用从启动器打开时,您没有指定默认启动 Android 的 Activity。您必须在 Manifest 中为您希望在应用启动时充当默认设置的 Activity 添加一个 Intent Filter。

        阅读http://developer.android.com/guide/topics/intents/intents-filters.html#ccases了解更多详情。

        【讨论】:

          【解决方案7】:

          我通过在应用程序标签中添加活动块解决了这个问题。我使用向导创建了项目,我不知道为什么我的 AdroidManifest.xml 文件不包含应用程序块?我添加了应用程序块:

          <application
              android:icon="@drawable/ic_launcher"
              android:label="@string/app_name" >
              <activity
                  android:name=".ToDoListActivity"
                  android:label="@string/app_name" >
                  <intent-filter>
                      <action android:name="android.intent.action.MAIN" />
          
                      <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
              </activity>
          </application>
          

          我在模拟器上得到了想要的输出。

          【讨论】:

            【解决方案8】:

            正如已经指出的,这个错误很可能是由于intent-filter 丢失或不正确造成的。

            我想补充一点,如果您在启动器活动(在清单中)设置android:exported="false",也会显示此错误。

            【讨论】:

            • 这确实是我的问题。
            【解决方案9】:

            我遇到了同样的问题,结果我在 xml 标记中有一个“\”而不是一个“/”。它仍然给出了同样的错误,但只是由于语法问题。

            【讨论】:

              【解决方案10】:

              如果您使用的是google提供的标准eclipse IDE进行Android开发,您可以在创建新Activity时勾选“Launcher Activity”复选框。请在下面找到:

              【讨论】:

                【解决方案11】:

                在 Eclipse 中什么时候可以这样做:

                但最好在 Android 清单文件中进行相应的更改。

                【讨论】:

                  【解决方案12】:

                  只需将其添加到 AndroidManifest.xml 文件中的应用程序标签

                  <intent-filter>
                  <action android:name="android.intent.action.MAIN" />
                  <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
                  

                  并将 uses-sdk 标签从 android:targetSdkVersion="16" 编辑为 17

                  <uses-sdk
                      android:minSdkVersion="8"
                      android:targetSdkVersion="17" />
                  

                  【讨论】:

                    【解决方案13】:

                    您错过了在清单文件中指定意图过滤器元素。清单文件是:

                    <application android:label="@string/app_name" android:icon="@drawable/icon">
                        <activity android:name="Your Activity Name"
                                  android:label="@string/app_name">
                            <intent-filter>
                                <action android:name="android.intent.action.MAIN" />
                                <category android:name="android.intent.category.LAUNCHER" />
                            </intent-filter>
                        </activity>
                    </application>
                    

                    添加并正确检查。希望这会有所帮助..

                    【讨论】:

                      【解决方案14】:

                      清单区分大小写,因此请比较此行是否存在大小写不匹配的情况,尤其是 MAIN 中的单词:

                      <action android:name="android.intent.action.MAIN" />
                      <category android:name="android.intent.category.LAUNCHER" />
                      

                      【讨论】:

                        【解决方案15】:

                        您可以在 Eclipse 清单可视化编辑器中将启动器添加到活动:

                        【讨论】:

                          【解决方案16】:

                          MAIN 将决定应用程序启动时将使用的第一个活动。 Launcher 将在应用程序仪表板中添加应用程序。

                          如果您已经拥有它们并且您仍然收到错误消息,但这可能是因为您可能在意图过滤器中使用了更多类别或操作。在意图过滤器中只能有一个这样的标签。要添加另一个类别,请将其放入另一个意图过滤器中,如下所示

                                  <intent-filter>
                                      <action android:name="android.intent.action.MAIN" />
                          
                                      <category android:name="android.intent.category.LAUNCHER" />
                                  </intent-filter>
                          
                                  <!--
                                       TODO - Add necessary intent filter information so that this
                                          Activity will accept Intents with the
                                          action "android.intent.action.VIEW" and with an "http"
                                          schemed URL
                                  -->
                                  <intent-filter>
                                      <action android:name="android.intent.action.VIEW" />
                                      <data android:scheme="http" />
                                      <category android:name="android.intent.category.BROWSABLE" />
                                  </intent-filter>
                          

                          【讨论】:

                            【解决方案17】:

                            您没有在要首先出现的活动中包含启动器意图过滤器,因此它不知道应用程序启动时要启动哪个活动,为此通过在 manifest.xml 中包含启动器过滤器意图来告诉系统

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 2013-02-04
                              • 1970-01-01
                              • 1970-01-01
                              • 2018-05-26
                              • 1970-01-01
                              • 1970-01-01
                              • 2015-06-08
                              • 2020-11-25
                              相关资源
                              最近更新 更多