据我所知,当 Android 手机接触到 NFC 标签时,它会发送一个事件(NDEF_DISCOVERED Intent ),但 Android 似乎并不关心这个标签是否留在原地。我的解决办法是先锁屏再解锁。如果标签还在,我可以再读一遍。这显然是一种愚蠢的方式。有没有更聪明的方法来做到这一点?
最佳答案
作为您的 Activity 接收到的 NFC Intent 的一部分,您还将在 Intent Extra 中收到一个标记句柄(Tag
对象):
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
根据标签的类型,您可以获得特定标签技术的实例。例如,如果它是一个 NDEF 标签,你可以得到:
Ndef ndefTag = Ndef.get(tag);
然后您可以使用 connect() 方法连接到标签:
ndefTag.connect();
之后,您可以通过定期尝试读取标签来检查标签是否仍“连接”到设备:
try {
ndefTag.getNdefMessage();
} catch (IOException e) {
// if you receive an IOException, contact to the tag has been lost
}
请注意,这仅在您的 Activity 始终处于前台并且屏幕保持打开时才有效。
关于android - 如何确定NFC标签现在是否仍在Android范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23441430/