有没有办法在不打开activity的情况下从后台调度中读取NFC标签ID?

Is there a way to read NFC tag id from background dispatch without opening activity?

我想读取用户在后台检测到的任何标签的 ID,而无需在我的应用程序中实际打开 activity。 我目前拥有的是 MainActivity 中 TECH_DISCOVERED 的意图过滤器:

<intent-filter>
   <action android:name="android.nfc.action.TECH_DISCOVERED"/>
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
   android:resource="@xml/nfc_tech_filter" />

其中 nfc_tech_filter.xml 定义了我想要的所有技术。它按预期工作,activity 要么直接打开,要么用户需要在不同的应用程序之间进行选择。是否可以在没有任何用户交互的情况下获取有关标签的有限数据,例如 ID?

实际上,NFC 的安全模型是 NFC 仅在前台处理,这符合以下逻辑:如果用户已将 NFC 标签带入范围内,那么他们期望与其进行一些交互,并且应用程序必须这样做在前台。

有多种不同的方法可以启动所谓的“后台服务”,它们都有限制并且仍然可能被系统停止并且 Google 随着时间的推移改变了支持的内容并且有Android 8.

中的大量更改

处理 NFC 的 android 代码进行了各种检查以确保 NFC 仅由前台应用程序处理。