解决方法
不,您的应用无法真正检查当前启用的模式.关键在于,默认情况下,Android设备会定期检查所有三种模式(实际上它比这更复杂一点:这三种模式本身被分成几个部分,每个部分轮询某种技术).因此,当屏幕打开时,您可以期望Android设备在监听其他读取器和轮询不同类型的标签技术和点对点模式设备之间循环切换.无论您是注册通过点对点模式发送消息,是否为HCE注册了应用,或者您的应用注册了NFC发现意图,都是如此.即使您在设置中禁用Android Beam,设备仍将保持轮询以进行对等模式.
只有当您使用reader mode API(在Android 4.4上提供)明确禁用卡仿真和P2P时,您的应用才能控制只有读取器/写入器模式处于活动状态(甚至可以控制应该轮询哪些标记技术).
因此,您的应用可以知道它自己启用了哪些模式,并且可以做一些猜测,例如
>如果屏幕打开且未使用阅读器模式API显式强制读取器/写入器模式,则所有三种模式都可能处于活动状态.>如果屏幕关闭,则只有卡仿真模式可能处于活动状态(尽管这取决于设备,HCE通常不可用).