是否可以在一个<intent-filter>中为Activity注册两个动作

Igo*_*daš 11 android intentfilter android-manifest

我想注册我的启动器活动,因此可以通过单击图标和打开自定义方案的链接来启动它.我设法让它工作,但质疑这是正确的方法.这是我的清单的相关部分:

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

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

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

            <data android:scheme="my.sheme" />
        </intent-filter>
Run Code Online (Sandbox Code Playgroud)

这确实有效,但我想知道我是否应该在同一个意图过滤器下注册这两个动作.我尝试将标签从第二个过滤器移动到第一个过滤器,但是我的活动在安装时没有显示图标.是否有可能这样做,我只是做了一些小的语法错误(或打破了一些未记录的声明规则的顺序)或者我的想法是完全错误的,并且有更深层次的原因为什么这不起作用?

注意:我确实设置了android:exported ="true"但android.intent.action.MAIN即使没有它也能正常工作,因为如果你使用action.MAIN它会被导出

aki*_*irk 16

正如Android文档所述:

如果要处理多种意图,但只能处理动作,数据和类别类型的特定组合,则需要创建多个意图过滤器.

否则,您可以将它们分组到一个intent-filter中.

  • 在[链接的文档页面](http://developer.android.com/guide/components/intents-filters.html#Receiving) 上,有一个在意图过滤器中包含多个操作的示例:`android.intent.action。 SEND` 和 `android.intent.action.SEND_MULTIPLE` (2认同)