NFC读卡时,自己打开应用,请问如何解决?
When NFC reads the card, it opens the application by itself, how can I solve this problem?
NFC读卡时,自己打开应用,但我想打开这个应用才读NFC
<activity
android:name="MyActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.nfc.action.TECH_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>
nfc_tech_intent_filter
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.IsoDep</tech>
</tech-list>
</resources>
答案是不要将 intent-filter
和 tech-filter 放在清单中,这是导致 NFC 服务在读取匹配的 NFC 卡时打开您的应用程序的原因。
所以从清单中删除
<intent-filter>
<action android:name="android.nfc.action.TECH_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" />
只需在您的活动 onResume
中使用 nfcAdapter.enableForegroundDispatch
或更好的 nfcAdapter.enableReaderMode
API(以及 onPause
中禁用的方法)来读取 NFC当您的 App 已经 运行 并且在前台
时显示卡片
NFC读卡时,自己打开应用,但我想打开这个应用才读NFC
<activity
android:name="MyActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.nfc.action.TECH_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>
nfc_tech_intent_filter
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.IsoDep</tech>
</tech-list>
</resources>
答案是不要将 intent-filter
和 tech-filter 放在清单中,这是导致 NFC 服务在读取匹配的 NFC 卡时打开您的应用程序的原因。
所以从清单中删除
<intent-filter>
<action android:name="android.nfc.action.TECH_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" />
只需在您的活动 onResume
中使用 nfcAdapter.enableForegroundDispatch
或更好的 nfcAdapter.enableReaderMode
API(以及 onPause
中禁用的方法)来读取 NFC当您的 App 已经 运行 并且在前台