当我在 ACR122U 上模拟卡时,我的 Galaxy 5 有奇怪的行为。我认为问题发生在我运行 Android 更新时。当应用程序不在前台时,我的意图过滤器不再捕获标签,因为模拟标签被视为 aJIS 6319-4
而不是ISO/IEC 14443-4
标签。
当应用程序不在前台或在前台并运行时,我得到的序列foregroundDispatch
:
TgInitAsTarget
> FF 00 00 00 27 D4 8C 04 04 00 01 23 45 20 000000000000000000000000000000000000000000000000000000000000
< D5 8D 08 E0 80 90 00
TgGetData
> FF 00 00 00 02 D4 86
Target has been released error
< D5 87 29 90 00
我循环了 5 次,但没有一个TgInitAsTarget
会起作用。当我使用enableReaderMode
(没有 NDEF 跳过)时,我得到了正确的序列:
...
> FF 00 00 00 02 D4 86 //TgGetData
< D5 87 00 00 A4 04 00 07 D2 76 00 00 85 01 01 00 9000 //SELECT command
> FF 00 00 00 05 D4 8E 02 6A 82 //file or application not found
< D5 8F 00 90 00 //Ack
> FF 00 00 00 02 D4 86 //TgGetData
< D5 87 00 00 A4 04 00 07 D2 76 00 00 85 01 00 90 00 //SELECT command
> FF 00 00 00 05 D4 8E 02 6A 82 //file or application not found
< D5 8F 00 90 00 //Ack
> FF 00 00 00 02 D4 86 //TgGetData
< D5 87 00 00 A4 04 00 07 D2 76 00 00 85 01 00 90 00 //SELECT command
> FF 00 00 00 05 D4 8E 02 6A 82 //file or application not found
< D5 8F 00 90 00 //Ack
TgGetData
> FF 00 00 00 02 D4 86
//Recieving data
问题 1
为什么当应用程序不在前台或不使用时,Android 什么也不发回enableForegroundDispatch
?这很奇怪,因为它一直在工作,但看起来更新改变了 NFC 的行为。
问题2
enableReaderMode
(没有 NDEF 跳过)的行为与 的行为不同是否正常enableForegroundDispatch
?
请注意,使用以下命令启用阅读器模式:
nfcAdapter.enableReaderMode(this, this, NfcAdapter.FLAG_READER_NFC_A, null);