Here code than work with NFC
import android.app.Activity
import android.nfc.NfcAdapter
import android.nfc.Tag
import android.nfc.tech.IsoDep
private val nfcAdapter: NfcAdapter? = NfcAdapter.getDefaultAdapter(activity)
override fun start() {
if (BuildConfig.DEBUG)
Log.d(TAG, "start:" +
"\nactivity = $activity" +
"\ndefault_nfcAdapter = $nfcAdapter" +
"\nBuild.VERSION.SDK_INT = ${Build.VERSION.SDK_INT}")
if (nfcAdapter == null
|| !nfcAdapter.isEnabled
|| Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
return
}
if (BuildConfig.DEBUG)
Log.d(TAG, "start: call_enableReaderMode(), nfcAdapter_isEnabled = ${nfcAdapter.isEnabled}")
nfcAdapter.enableReaderMode(
activity,
this::onTagDiscovered,
NfcAdapter.FLAG_READER_NFC_A or NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK,
null
)
private fun onTagDiscovered(tag: Tag) {
if (BuildConfig.DEBUG)
Log.d(TAG, "onTagDiscovered: findTag = $tag")
...
}
And here logcat:
start:
activity = org.tokend.contoredemptions.features.dashboard.view.DashboardActivity@a7be4f1
default_nfcAdapter = android.nfc.NfcAdapter@fbb6103
Build.VERSION.SDK_INT = 29
start: call_enableReaderMode(), nfcAdapter_isEnabled = true
On some device callback NfcAdapter.ReaderCallback
, onTagDiscovered
success call
onTagDiscovered: findTag = TAG: Tech [android.nfc.tech.IsoDep, android.nfc.tech.NfcA]
and as result NFC success work.
But on another devices callback NfcAdapter.ReaderCallback
, onTagDiscovered
not call and as result NFC not work.