我目前对MainActivity的intent-filter看起来像这样
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
</intent-filter>
请注意,有2个操作节点。它是否正确?或者每个intent-filter只应该有一个动作节点吗?
此外,DEFAULT类别的目的是什么?
<category android:name="android.intent.category.DEFAULT" />
答案 0 :(得分:9)
这是对的吗?
可能是,虽然在这种情况下我怀疑它不是你想要的。
此<intent-filter>
将匹配:
Intent
行为和MAIN
类别,或
LAUNCHER
Intent
和USB_ACCESSORY_ATTACHED
类别
前者很常见。但是,我更怀疑LAUNCHER
将与USB_ACCESSORY_ATTACHED
类别一起使用。我甚至不确定它是否与活动一起使用,因为文档在这一点上有点混乱。
答案 1 :(得分:5)
根据您的活动需要,意图过滤器可以有多个操作。例如,如果您的应用程序从社交共享应用程序收到一个或多个图像,那么您将使用
<action android:name="android.intent.action.SEND"/>
<action android:name="android.intent.action.SEND_MULTIPLE"/>
答案 2 :(得分:1)
是的,来自<action>
元素的文档:
http://developer.android.com/guide/topics/manifest/action-element.html
向意图过滤器添加操作。元素必须 包含一个或多个元素。如果它不包含任何,不 Intent对象将通过过滤器。见意图和意图 过滤有关意图过滤器和操作角色的详细信息 过滤器中的规范。
答案 3 :(得分:1)
意图过滤器可以应用于许多操作。但这意味着在接收代码中您需要检查哪个意图操作已激活。例如:
<action android:name="android.intent.action.VIEW" />
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
如
boolean ndefAction = NfcAdapter.ACTION_NDEF_DISCOVERED.equals (intent.getAction ());
答案 4 :(得分:0)
我测试了它,如果不在类别中添加DEFAULT,它将无法正常工作。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" /> <!--This is required-->
</intent-filter>