当前位置: 首页 > 知识库问答 >
问题:

如何在Android中创建标记对象

艾灿
2023-03-14

我正在尝试将标记对象用于我的flatter插件。使用MethodChannel,我可以调用Java函数,但我的标记对象仍然为null。我如何正确地创建此意图?

else if (call.method.equals("readTag")) {
      Intent intent = new Intent("android.intent.action.MAIN");
      Tag nfcTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

我的猜测是不能以这种方式创建意图,这就是为什么它为标记返回空对象的原因。

共有1个答案

陈斌蔚
2023-03-14

由于您创建了一个新的和空的意图,因此无法从中读取任何内容。果然如此。

一个Intent实际上只是一个通用的储存类别,通常用于在一个活动和另一个活动之间以标准格式传递数据。

它们使用在活动之间传递特定的数据。系统NFC活动用于将NFC相关数据传递给活动的其中一个是NfcAdapter。EXTRA_TAG键。

其目的与实际读取NFC标记无关,它们只是用作一种通信方法,要求系统NFC活动执行任务,以及如何返回数据。

因此,您可以在任何地方创建它们,其中包含大量不同的内容,并将它们传递给任何活动以提供数据或接收它们以发送数据。

你似乎没有理解NFC在Android中是如何工作的<基本概念是。

旧API的
你创建一个Intent,基本上有一条消息给系统NFC应用程序,说“当一个人进入范围时,我想被发送关于特定类型NFC数据的数据”,你发送那个Intent当系统NFC应用程序看到一个正确类型的标签进入范围时,它会创建一个意图来存储关于NFC标签的数据,以便发送回活动
这是使用进程间通信的通用方法。

当您使用特定于NFC的方法再次发送有关您感兴趣的标记的数据时,较新的API会执行类似的操作,当它看到请求类型的标记进入范围时,会以更具体的格式发送回
更新API的示例https://stackoverflow.com/a/64921434/2373819

清单过滤器清单过滤器独立于新旧API,它们用于存储系统NFC应用程序在看到特定类型的NFC卡时可以用来决定是否启动应用程序的信息。它们可以与旧的和新的API一起使用,但它们使用与旧API相同的字段将内容消息传递给您的应用程序,这可以使用getIntentonCreate读取和处理。

因此,创建一个新的和空的意图并期望神奇地获得一些NFC数据是错误的。

 类似资料:
  • 问题内容: 在我的随机测试中,我看到了一种将锚标签放在另一个锚标签内的行为。我做了一个jsfiddle。 但是在开发人员工具中,它看起来有所不同: 我相信我们不能将锚标记放在另一个锚标记内,因为单击内部锚会导致click事件冒泡到父锚标记,这是不允许的。 我的假设正确吗? 问题答案: aHTML语法禁止嵌套元素。HTML规范没有说明原因;他们只是强调规则。 从实际的角度来看,浏览器会在其解析规则中

  • 我即将对我的项目进行一个重大的技术更改,从ANT转移到Gradle。这个项目从来没有发布过--它仍在开发中。我想标记最后的旧技术版本,以便可以找到参考或逆转。但我不想暗示有任何一种释放。 然后 我之前向GitHub提交了一个支持请求,但当时他们有一些支持积压,所以我的请求被关闭了。

  • 我想创建一个如下所示的自定义对话框 我试过以下几件事。 > 我创建了AlertDialog.Builder的子类,并使用了自定义标题和自定义内容视图,但结果不是预期的。 另一个尝试是子类DialogFragment并自定义onCreateDialog中的对话框,但结果并不像预期的那样。 然后我尝试使用一个普通的对话框类。结果不如预期。 在这三种情况下,问题是当我忽略标题视图时,对话框的大小不像预期

  • 在我的随机测试中,我看到了一个行为,我把一个锚标签放在另一个锚标签里。我做了一个jsfiddle。 但在开发人员工具中,它似乎有所不同: 我相信我们不能将锚定标记放在另一个锚定标记内,因为单击内部锚定将使单击事件冒泡到父锚定标记,这是不允许的。 我的假设正确吗?

  • 问题内容: 一切都在问题中。这是我的代码: 我正在用Android编写一个小型文件管理器,我想增加创建目录的可能性。没有异常,成功变量总是返回false。有人可以告诉我我的代码有什么问题吗? 谢谢你的建议!! [编辑] 顺便说一句,当手机处于开发模式时,应用程序是否对sdcard具有写访问权限?我正在用手机编程(Acer液体) 问题答案: 您必须添加此权限: 顺便说一下,不确定如何获取SDcard

  • 我还要做什么吗? 我在shell中使用的命令是: 现在,当我键入时,它显示: 我如何让这个标签出现在GitHub上?我的标签呢?