首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓NfcAdapter.enableReaderMode回调未调用

安卓NfcAdapter.enableReaderMode回调未调用
EN

Stack Overflow用户
提问于 2022-03-29 06:34:10
回答 1查看 432关注 0票数 1

我想,在应用程序的某一点上,请求用户扫描NFC标记。enableReaderMode似乎是一个合理的解决方案。但是,它不起作用--考虑一下在一个新的Android项目中(添加了NFC权限)活动中的onCreate中的以下代码。

代码语言:javascript
运行
复制
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter == null) {
    Toast.makeText(this, "No NFC", Toast.LENGTH_LONG).show();
    return;
}
System.out.println("NFC enable reader mode");
nfcAdapter.enableReaderMode(this, tag -> {
    System.out.println("NFC tag found");
    Toast.makeText(this, "Tag found", Toast.LENGTH_LONG).show();
}, NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK, null);

我在日志中看到了"NFC启用读取器模式“,并且(在一个版本的Android上)当应用程序启动时,标签不会导致其他应用程序打开,这表明阅读器模式确实是活动的( FLAG_READER_SKIP_NDEF_CHECK阻止ndef检查),但是回调没有被调用。我把标签贴在应用程序的后面,什么也没看到,退出了应用程序,标签立即扫描--所以标签很好,它们的位置也很好,只是出于某种原因,enableReaderMode不会在标签靠近时导致回调被调用。

我在氧气操作系统10和Android 11上试过。在10上,它显示了上面给出的行为。在11,标签打开其他应用程序,作为正常(即错误地),而不是被抑制的ndef标志。也没叫回电话。

这似乎是一个非常基本的用例,如果它坏了,我会找到几十个关于它的线程,但是我只找到了两种相关的东西:on some device not call callback (NfcAdapter.ReaderCallback) method in nfcAdapter.enableReaderModeNFCAdpater.enableReaderMode(...) doesn't work consistently if booting in Kiosk mode activity。前者看上去相当相关,后者则不那么相关,但两者都没有得到回答。我想我一定是做错了什么--但是这是一个简单的代码块,我不知道我做错了什么。另外,设备之间存在着不同的行为。有人知道怎么回事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-29 06:45:39

您已将enableReaderMode配置为跳过Ndef检测,但尚未将其配置为读取任何其他标记技术类型

您的标记选项应该如下所示,而不是NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK,这样才能有效地读取标记

代码语言:javascript
运行
复制
NfcAdapter.FLAG_READER_NFC_A |
NfcAdapter.FLAG_READER_NFC_B |
NfcAdapter.FLAG_READER_NFC_F |
NfcAdapter.FLAG_READER_NFC_V |
NfcAdapter.FLAG_READER_NFC_BARCODE |
NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK |
NfcAdapter.FLAG_READER_NO_PLATFORM_SOUND
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71657452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档