在Android 4.4之前
您尝试做的事情根本不可能从应用程序(至少不在非根/未修改的设备上). Android系统(或更具体地说是NFC系统服务)之前显示消息“不支持NFC标签类型”,而不是将标签分发到您的应用程序.这意味着NFC系统服务会过滤MIFARE Classic标签,并且永远不会通知任何应用程序.因此,您的应用无法检测到MIFARE Classic标记或绕过该弹出消息.
在root设备上,您可以使用其中任何一个绕过消息
> Xposed修改NFC服务的行为,或
>系统分区上的CSC(消费者软件自定义)功能配置文件(请参阅/ system / csc /.如果CSC功能< CscFeature_NFC_EnableSecurityPromptPopup>设置为任何值,NFC系统服务将禁用弹出窗口并将MIFARE Classic标签分发给应用程序但“mifareclassic”或“all”.例如,您可以使用:
NONE
例如,您可以将此条目添加到文件“/system/csc/others.xml”(在该文件中已存在的< FeatureSet> …< / FeatureSet>部分内).
既然如此,你也要求Galaxy S6(question that you linked):我在S4上测试了这个方法.我还没有验证这是否仍然适用于最新固件或其他设备(例如S6).
自Android 4.4起
这是纯粹的猜测,但是according to this(链接不再可用),似乎有些应用程序(例如NXP TagInfo)能够在Android 4.4之后检测受影响的三星设备上的MIFARE Classic标签.这可能意味着前台应用程序能够使用读取器模式API(see NfcAdapter.enableReaderMode)绕过该弹出窗口,可能与NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK结合使用.