Android:enableReaderMode-未调用ReaderCallback
[删除(380066935@qq.com或微信通知)]
更好的阅读体验请查看原文:https://www.5axxw.com/questions/content/hj8ixv
我对android中的NFC阅读器模式有问题。我可以启用读卡器模式,但从不调用onTagDiscovered
回调。手机识别出标签,很快就会振动。
这里是我的代码:
try {
val nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter == null) {
Toast.makeText(this, "No NFC module :-(", Toast.LENGTH_SHORT).show();
} else if (!nfcAdapter.isEnabled) {
Toast.makeText(this, "NFC not enabled :-(", Toast.LENGTH_SHORT).show();
} else {
val options = Bundle()
options.putInt(NfcAdapter.EXTRA_READER_PRESENCE_CHECK_DELAY, 5000)
nfcAdapter.enableReaderMode(
this,
NfcAdapter.ReaderCallback() {
fun onTagDiscovered(tag: Tag) {
Log.println(Log.DEBUG, null, "Discovered!");
}
},
NfcAdapter.FLAG_READER_NFC_A or NfcAdapter.FLAG_READER_NFC_B or NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK,
options
);
Log.println(Log.DEBUG, null, "Reader Mode");
}
} catch (e: Exception) {
Log.println(Log.ERROR, null, e.toString());
}
问题在于回调的范围
我没有尝试以这种方式调用回调,我通常在活动范围内实现它,我不知道这是否也会导致问题
这已经过测试,将回调方法定义为nfcAdapter.enableReaderMode
调用的一部分不起作用,接口应该在Activity
范围内实现
e.g.
class MainActivity : NfcAdapter.ReaderCallback, AppCompatActivity() {
override fun onTagDiscovered(tag: Tag) {
Log.println(Log.DEBUG, null, "Discovered!");
}
then
nfcAdapter.enableReaderMode(
this,
this,
NfcAdapter.FLAG_READER_NFC_A or
NfcAdapter.FLAG_READER_NFC_B or
NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK,
options
);