android - 如何确定NFC标签现在是否仍在Android范围内?

标签 android android-intent tags nfc

据我所知,当 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/

相关文章:

javascript - 单击特定的超链接时,我应该获得与其相对应的值吗?

android - 如何在 android studio 的抽屉导航菜单项的右侧添加可扩展列表按钮?

android - 使用分页库和导航架构组件将 recyclerview 的状态保持在 fragment 中

android - 如何从 pendingintent 中接收额外信息?

android - 如何修复 NFC 中的 uid

php - 如何只从数据中获取 URL

java - CardView 中的进度条在 Recyclerview 中不起作用

android - 在 flutter 中添加视频通话

android - 延长 Google Glass 中的视频录制时间

java - 使用 ACTION_IMAGE_CAPTURE 时返回什么数据?