diff --git a/app/src/main/java/com/xiaoqu/watch/device/nfc/FiseNfcController.kt b/app/src/main/java/com/xiaoqu/watch/device/nfc/FiseNfcController.kt index 05ae884..b4c6e8b 100644 --- a/app/src/main/java/com/xiaoqu/watch/device/nfc/FiseNfcController.kt +++ b/app/src/main/java/com/xiaoqu/watch/device/nfc/FiseNfcController.kt @@ -82,13 +82,12 @@ class FiseNfcController @Inject constructor() : NfcController { // 非空且非全零才算有效卡号(全零=无卡贴近) if (nfcId.isNotEmpty() && nfcId.any { it != '0' }) { - Timber.d("NFC控制: 读到卡号 $nfcId,停止轮询") - // 读到有效卡号后立即停止轮询,避免重复回调 - stopScan() - // 切回主线程回调 + Timber.d("NFC控制: 读到卡号 $nfcId") + // 先回调再退出循环(不能先 stopScan,会 cancel 自己的协程) withContext(Dispatchers.Main) { callback(nfcId) } + // 回调完成后退出轮询,不再读卡 return@launch } }