【发布时间】:2020-04-04 21:23:51
【问题描述】:
在 Android 上使用 NFC 时我有点迷茫。
我想做以下事情: - 使用一个 NFC 标签作为令牌 - 在 Android 中阅读并展示一些功能 - 如果手机从令牌拨号消息中删除 - 如果手机重新连接或连接到另一个令牌显示另一个功能
我在 AndroidManifest 文件中为android.nfc.action.NDEF_DISCOVERED 使用了一个意图过滤器,并为过滤android.nfc.action.TECH_DISCOVERED 使用了一个xml。
主要活动成功打开,如果附加了另一个标签
@Override
protected void onNewIntent(Intent intent) { ...}
被调用。
我还使用计时器来检查标签是否仍然连接(基本上是 ndefTag.connect() ; NdefMessage ndefMsg= ndefTag.getNdefMessage(); 然后查看是否收到任何内容。
我将 Activity 的启动模式设置为 android:launchMode="singleInstance,否则每次将新标签放入手机时,应用程序都会完全重新启动。
现在我完全迷失了意图系统,因为通常 main 正在启动其他活动,而意图是在丢失当前活动和当前屏幕信息的情况下跳回 main。
所以我的问题是关于两个部分: - 是否真的如此复杂以至于需要使用意图?我不能以某种方式连接到手机的 NFC 阅读器,然后每隔几秒就轮询一次吗?询问是否连接了标签以及标签上有什么数据。使用 NDEF_DISCOVERED/TECH_Discovered 组合,我看到有时它只是挂起。 (如果它不是 SingleInstance-Activity - 有时也不会启动新活动)。 (首选) - 或者是否有一些干净的方法可以将 NFC 意图转发到应用程序的实际活动?或者说在运行时不应该调用main,而是一些处理连接的后台任务?
【问题讨论】: