我一直在我的应用中检测到启用NFC的卡,以读取标签值。以下是我的代码
OnCreate()
nfcAdapter = NfcAdapter.getDefaultAdapter(AuthDriverCard.this);
piTap = PendingIntent.getActivity(
this, TAP_REQUEST_CODE, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), PendingIntent.FLAG_UPDATE_CURRENT);
IntentFilter tagDetected = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED);
IntentFilter ndefDetected = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
IntentFilter techDetected = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
nfcIntentFilter = new IntentFilter[]{techDetected, tagDetected, ndefDetected};
OnResume
if (nfcAdapter != null) {
nfcAdapter.enableForegroundDispatch(AuthDriverCard.this, piTap, nfcIntentFilter, null);
}
OnPause
if (nfcAdapter != null) {
nfcAdapter.enableForegroundDispatch(AuthDriverCard.this, piTap, nfcIntentFilter, null);
}
OnNewIntent()
protected void onNewIntent(Intent intent) {
// my logic here
}
此代码几乎每次都能正常工作。但是有一段时间card is not detecting
,我发现了OnNewIntent() is not firing
。
可能是什么问题。我还需要set intent filter in manifest
吗?到目前为止,我还没有在清单中设置它,但是它对我没有任何问题。我的Java代码有什么问题吗?
请提出建议
NOTE-重新启动(杀死应用程序后)应用程序可解决该问题。此后,卡检测将起作用。
如果尚未添加以下内容,请在意图过滤器中添加以下内容:
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<action android:name="android.nfc.action.TECH_DISCOVERED"/>