enableForegroundDispatch和disableForegroundDispatch有什么作用?

时间:2014-11-15 08:12:18

标签: android android-intent nfc ndef nfc-p2p

我阅读了文档,但我并不完全理解这些内容。考虑到Android做出了令人费解的决定,我们现在需要使用Android Beam将数据从一部手机发送到另一部手机,并且无法同时将数据从两者发送到两者,我也看不到使用。

我只能在一部手机上拨打setNdefPushMessage,并在另一部手机中进行onNewIntent回叫,如果NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())为真,则会执行某项操作吗?

enableForegroundDispatchdisableForegroundDispatch有什么意义?

1 个答案:

答案 0 :(得分:13)

enableForegroundDispatch通过所有其他活动为您提供当前前景活动优先接收NFC事件。

例如,请考虑以下示例:

  • 您的活动和其他活动(来自同一应用或其他应用)在清单中为相同的 NDEF记录类型注册了一个意图过滤器。

  • 您的设备会收到包含该记录类型的NDEF消息作为其第一条记录。

  • 如果当前前台活动未向前台调度系统注册,则会显示活动选择器,用户可以在两个活动中进行选择。

  • 但是,如果当前的前台活动确实向前台调度系统注册(接收该类型的记录),它将优先于所有明显注册的意图过滤器,并将收到NDEF消息,而无需任何额外的用户互动。

更多事情:

  • 如果附加到NDEF消息,Android应用程序记录(AAR)将具有类似的效果,因为它会强制将NDEF消息仅传递到特定应用程序。

  • 如果NDEF消息包含针对其他应用的AAR,您仍然可以使用前台调度系统强制将NDEF消息传递到您的应用。因此,前台调度优先于AAR。

  • 请注意,前台调度系统不仅用于点对点模式数据交换,还用于读取NFC标签。在这种情况下,存在不包含NDEF消息的标签,因此,更有可能导致为同一标签类型注册多个活动。因此,在这种情况下,将您的活动优先于针对相同标签类型注册的任何其他活动更为有用。