我的 NFC 扫描应用程序仅在 NFC 类型 2 时启动



我做了一个可以读取NFC标签的NFC应用程序。效果很好。(所有类型(

但是从昨天开始,一旦在我的设备上维护NFC标签,我就会尝试自动启动我的应用程序。

所以我更新了我的清单:

<activity android:name=".MainActivity" android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
</intent-filter>

<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" />
</activity>

然后,这是我的nfc_tech_filter.xml

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.IsoDep</tech>
<tech>android.nfc.tech.NfcA</tech>
<tech>android.nfc.tech.NfcB</tech>
<tech>android.nfc.tech.NfcF</tech>
<tech>android.nfc.tech.NfcV</tech>
<tech>android.nfc.tech.Ndef</tech>
<tech>android.nfc.tech.NdefFormatable</tech>
<tech>android.nfc.tech.MifareClassic</tech>
<tech>android.nfc.tech.MifareUltralight</tech>
</tech-list>
</resources>

令人惊讶的是,它仅在我手持 NFC Type 2 对着我的设备时才有效。 我已经尝试使用我的公寓密钥(Mifare Classic(和我的银行卡(IsoDep(,但它没有启动我的应用程序... 我指定当我的应用程序已经启动时它可以工作。

知道吗?

编辑:

这是我现在的清单:


<activity android:name=".MainActivity" android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/nfc_tech_filter" />
</activity>

现在,当我通过我的银行卡时,它会打开应用程序,但不显示任何结果。

Parcelable[] rawMessages =
intent.getParcelableArrayExtra(NfcAdapter.EXTRA_TAG);

rawMessages变量在此之后为NULL。如果我放NfcAdapter.EXTRA_NDEF_MESSAGES也一样

ACTION_TAG_DISCOVERED:

如果没有活动处理ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED意向,则启动此意向。

https://developer.android.com/guide/topics/connectivity/nfc/nfc

当没有其他人捕获此意图时,您会得到它,因此您的设置中存在问题。

您可以像以下方式显式捕获它:

<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
</intent-filter>

最新更新