尽管在manifest.xml中声明,但未找到Launcher活动

Min*_*amy 5 android manifest android-activity

在我的应用程序中,我在manifest.xml文件中定义了主要活动,如下所示:

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

                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>
            <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
        </activity>
Run Code Online (Sandbox Code Playgroud)

当我从连接到真实设备或模拟器的eclipse运行项目时,我在控制台中收到以下消息:未 找到Launcher活动

这可能是什么原因?

小智 15

将intent-filter拆分为两个单独的过滤器.如果你像这样混合它们,android将不会确定两者中的一个是启动器过滤器.

<activity
    android:name=".MainActivity"
    android:label="@string/guide_activity" >

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

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

        <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>
</activity>
Run Code Online (Sandbox Code Playgroud)

  • 当android向您的应用发送意图时,它会检查意图过滤器以测试是否符合所有规则.只有当这是真的时,意图才会真正实现.在这种情况下,它会检查launch-intent是否匹配"SEARCH"和"MAIN"两个动作.情况并非如此,因此意图无法正确传递.如果拆分它,系统会看到一个intentfilter存在于所有规则匹配并正确传递主要意图的位置. (2认同)