使用 ST25 android SDK 进行 NFC 标签密码保护

2024-03-13

我正在与ST25 标签,更具体地说是 type5 标签 ST25DV64K。适用于 Android 的 ST25 SDK 有一些有趣的示例和教程。我仍然在努力使用文档末尾提供的代码示例here https://www.st.com/resource/en/user_manual/dm00445390-st25-software-development-kit-stmicroelectronics.pdf关于受密码保护的数据,其中包括以下几行:

byte[] password;
int passwordNumber = type5Tag.getPasswordNumber(area);
tag.presentPassword(passwordNumber, password);
NDEFMsg ndefMsg = myTag.readNdefMessage(area);

第一个问题,当我实例化 5 类标签时,我看不到这些方法Type5Tag class:

import com.st.st25sdk.type5.*;
Type5Tag tag5;
tag5.??

然后,不清楚我们应该如何设置密码。我找不到任何为特定区域设置密码并将其删除的示例,我们可以使用的密码格式是什么?是否可以从 Android 执行此操作,还是必须使用 ST25 应用程序?欢迎举例!谢谢。


在 ST25 SDK Zip 文件中,您将找到使用 ST25 SDK 库的基本 Android 应用程序示例(位于 \integration\android\examples\ST25AndroidDemoApp)。

此示例使用名为“TagDiscovery”的类,该类能够识别任何 ST25 标签并实例化正确的对象。就您而言,如果您仅使用 ST25DV64K 标签,您可能会想做一些简单的事情。

这是我给你的建议: 在您的 Android 活动中,我希望您订阅每次粘贴 NFC 标签时都会收到通知(在“ST25AndroidDemoApp”示例中,请查看 onResume() 函数中的enableForegroundDispatch())。 为了确定 Intent 是否对应于“NFC Intent”,我们检查 Intent 的 Action 是否为 ACTION_NDEF_DISCOVERED、ACTION_TECH_DISCOVERED 或 ACTION_TAG_DISCOVERED。

当出现这种情况时,我们就知道这是一个 NFC Intent。然后我们可以调用它来获取 androidTag 的实例:

Tag androidTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

该对象代表Android中当前的NFC标签。

我们现在要实例化一个 ST25DVTag 对象。

import com.st.st25sdk.type5.st25dv.ST25DVTag;

…

AndroidReaderInterface readerInterface = AndroidReaderInterface.newInstance(androidTag);
byte[] uid = androidTag.getId();
uid = Helper.reverseByteArray(uid);
ST25DVTag myST25DVTag = new ST25DVTag(readerInterface, uid);

您现在有一个名为 myST25DVTag 的对象,可用于与标签进行通信!

例如,如果您想使用密码:

byte[] password = new byte[];      // TODO: Fill the password
int passwordNumber = myST25DVTag.getPasswordNumber(area);
myST25DVTag.presentPassword(passwordNumber, password);
NDEFMsg ndefMsg = myST25DVTag.readNdefMessage(area);

在此之前,您需要检查与该区域关联的密码。该标签有 3 个密码,可以自由分配给任何区域。默认情况下没有设置密码,因此您应该设置一个。以下是我对 Area1 使用密码 2 的示例:

int AREA1 = 1;
int passwordChosen = 2;
myST25DVTag.setPasswordNumber(AREA1, passwordChosen);
                           

我建议您从 Google Play 安装“ST25 NFC Tap”Android 应用程序:如果您点击 ST25DV 并进入“区域安全状态”菜单,您将能够看到:区域数量、哪些区域受读取和/或写入密码保护、使用哪个密码……等

如果您有兴趣,可以在这里找到该应用程序的源代码:https://www.st.com/en/embedded-software/stsw-st25001.html https://www.st.com/en/embedded-software/stsw-st25001.html

如果有不清楚的地方请告诉我。

免责声明:我是 ST25 SDK 开发团队的成员。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ST25 android SDK 进行 NFC 标签密码保护 的相关文章

  • 如何从android ble扫描结果中获取CRC?

    我每次都从 ble 设备收到 62 字节的扫描结果 使用下面的回调代码获取扫描结果 我可以获取 RSSI 但无法获取 CRC 或者 获取一帧的CRC的逻辑是什么 来自 ble 设备的数据格式 如数据包标头 广告数据 CRC RSSI 如何从
  • Android EditText 和 addTextChangedListener

    我目前正在将数据库管理器移植到 Android 由于性能原因 我喜欢 仅更新已修改的属性 我尝试使用 addTextChangedListener 执行此操作 以便将修改后的条目添加到列表中 但我的程序从未输入其任何方法 EditText
  • 在工具栏下显示内容

    您好 我试图简单地将我的内容放在工具栏下方 但是当我运行我的应用程序时 某些内容本应位于工具栏下方 却隐藏在工具栏后面 我已经阅读了有关使用框架布局来尝试将其分离的内容 但我有点卡住了 我目前正在使用该软件提供的基本 android stu
  • 升级到最新支持库后Android JACK编译器错误

    Android Studio 2 2 3 Windows 10 64位 构建工具版本 25 Android Gradle插件版本2 2 3 升级到最新的支持库 从 23 4 0 到 25 1 0 并更改编译版本 从 23 到 25 后 我收
  • 为什么不能在 Fragment 中使用 ViewPager?它实际上是

    有信息无法使用ViewPager在一个Fragment在许多来源中 例如 Android 开发者繁忙编码指南 http commonsware com 作者 Mark Murphy 或者类似的帖子this https stackoverfl
  • Android Camera.takePicture() 有时不返回?

    我正在编写一个Android 拍照应用程序 该代码在 onPreviewFrame byte data Cameracamera 中从预览中获取帧后进行一些处理 问题在于 android hardware Camera 的函数 takePi
  • 嵌套 XML 布局文件

    android 有没有办法从另一个布局文件引用 xml 布局文件 为了更好地解释 我有一个名为layout1 xml 和layout2 xml 的布局文件 我可以从layout1 xml引用layout2 xml吗 用这个
  • 写入 Android UI Automator 输出控制台

    我正在 Android UI Automator 上编写一个小包装器 通常我们可以在控制台看到测试用例的状态 我可以访问它并添加我自己的消息吗 我努力了System out println 但这没有用 有什么办法可以做到这一点吗 您可以使用
  • VOIP通话录音

    我正在开发一个在 android 中录制 VOIP 通话的项目 我没有找到任何解决方案 有很多应用程序支持手机上的 VOIP 录音 我找不到任何教程和帮助 立方体通话记录器 https play google com store apps
  • Play 商店中的应用描述更新

    我想更新应用程序的描述以及 Play 商店上的屏幕截图 但应用程序保持相同 即相同的版本号 我不想发布新应用程序 因为应用程序中没有任何更改 这可能吗 谷歌也会要求更新应用程序吗 您可以更新描述 也可以更改屏幕截图 您的应用程序将保持不变
  • 使用 OkHttp 下载损坏的文件

    我编写的下载文件的方法总是会产生损坏的文件 public static String okDownloadToFileSync final String link final String fileName final boolean te
  • Android L,使用 joda.time 库的异常

    该应用程序适用于所有设备 包括 nexus 5 和 nexus 7 在 Android L 预览版上运行相同的应用程序时 应用程序崩溃了 我一直在调试 并且调用 DateTime 构造函数发现了异常 public static String
  • 使用 DataBinding 测试片段时膨胀类 Fragment 时出错

    有人可以帮我解决这个问题吗 在我的测试中 我想检查登录按钮是否显示在起始页上 今天我已经为这个错误苦苦挣扎了一段时间 我不知道应该如何解决它 我在这里错过了什么 也许这个问题与这个问题有些相似 Espresso 测试失败 并显示 java
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 在 Android 中加密/解密字符串的简单方法

    我的问题是如何加密String String AndroidId Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceSta
  • 如何在 60 分钟后删除共享首选项

    我想存储登录数据 但希望在 60 分钟后删除该数据 执行此操作的正确方法是什么 在这 60 分钟内可以关闭 停止 打开应用程序 我不想使用内部数据库 这是我的访问代码SharedPreferences sharedpreferences g
  • Android Google Map V2:如何在单击另一个标记时更改先前单击的标记的图标

    更新 我通过添加 previousMarker 对象解决了性能问题 因此 只有先前单击的标记将被删除并替换为默认图标 但是 当我单击标记时 信息窗口仍然不显示 我有一个地图视图并在上面设置了一些标记 我想要的是 当我单击一个标记时 它将其图
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • 了解应用程序在后台时何时收到 Firebase 消息

    我知道这个标题有同样的问题 但不幸的是它没有得到正确的回答 它被接受了 here https stackoverflow com questions 37711082 how to handle notification when app
  • Android 的代码覆盖率[重复]

    这个问题在这里已经有答案了 可能的重复 Android测试代码覆盖率 Eclipse https stackoverflow com questions 3282702 android test code coverage eclipse

随机推荐

  • 使用 helix 工具包创建可点击的对象

    我在 Helix Toolkit 上找到了一个例子 它被称为 ScatterPlot 它非常接近我真正需要的 但我找不到任何关于如何将 onclick 事件侦听器添加到创建的对象 在本例中为球体 的信息 这会将球体添加到 游乐场 scatt
  • jdk 1.5 中不存在 javax.swing.grouplayout

    我用netbeans开发了一个java应用程序 它使用jdk 1 6 效果很好 但现在的要求是我需要从另一台没有 netbeans 且使用 jdk 1 5 的计算机中的 java 文件构建应用程序的 jar 我无法将该机器升级到jdk 1
  • 使用宏合并 CSV 文件

    知道如何合并一个文件夹中的 csv 文件吗 我有许多具有相同结构 列数和标题 的 csv 文件 我需要将它们的内容合并到一张纸中 我知道这并不难 但是 当我从一个表添加内容时 我需要添加带有复制此数据的表名称的新列 有什么帮助吗 谢谢你 有
  • 通过构造函数传递和存储 const 引用?

    这可能是一个简单的问题 但我一直坚持下去 我试图通过它的构造函数将一个对象从 ObjectA 传递到 ObjectB 它是 ObjectA 的成员 但是 我不想传递值 而是只想传递 const 引用并无限期地存储该引用 问题是我不知道该怎么
  • 正则表达式导致“分隔符不能是字母数字或反斜杠”[重复]

    这个问题在这里已经有答案了 我有这个代码 function a menu item remove link pattern class
  • 初始化张量

    tf coo tf SparseTensor indices np array 0 0 0 1 1 2 3 9 1 4 9 9 9 9 9 9 T values 1 2 3 5 1 1 1 1 shape 10 10 我收到错误消息 Inv
  • vuejs 条件包装器

    在我的 nativescript vue 应用程序中 我有一个名为 profileForm 的单个文件组件 我想以两种方式使用该组件 如果用户登录 我希望将该组件作为布局组件的插槽来编辑配置文件 否则我想要的是作为注册表 我不想创建额外的组
  • 更新多对多关联原则2

    有什么解决方案可以自动执行此操作吗 我的两个实体 class User ManyToMany targetEntity Product inversedBy users JoinTable name user product joinCol
  • 根据条件获取Python Pandas中数据帧的第一行,而不迭代整个数据帧[重复]

    这个问题在这里已经有答案了 假设我想获取数据帧的第一行 其中某一列具有负值 import pandas as pd df pd DataFrame columns c data 2 4 2 3 1 0 index df loc df c l
  • Google 未显示 React-Helmet 标题和描述

    我使用react helmet 为我的React 应用程序的每个页面提供唯一的标题和描述 当我使用开发工具检查页面时 标题在浏览器选项卡中正确呈现 标题和描述也正确呈现 然而 谷歌并没有在搜索结果中显示标题或描述 我究竟做错了什么 我研究过
  • 根据 selectInput 更改绘图图表 y 变量

    我正在创建一个简单的折线图 可以在 Shiny 中正确呈现 我现在添加了一个 selectInput 其中包含 2 个不同度量的名称 按照它们在我的数据集中出现的方式编写 我希望我的 y 变量能够相应地改变 p lt plot ly dat
  • 在一个查询中插入两个表

    如何同时将值插入到两个表中 如果不成功 两个表都应该回滚 我正在使用 SQL Server 查询过程会抛出 C 代码 您可以将这两个查询作为一个语句运行 insert into table1 values insert into table
  • 在Android项目中使用开源库

    我是 Android 编程的初学者 我正在使用 android studio 现在我想知道从 gitHub 安装开源库的最佳方法是什么 我的问题是从组织原则的角度来看 我应该为每个库创建一个新包并将所有库源代码按原样放入该包中吗 该包应该位
  • 导入类型时 Sveltekit Typescript 解析错误

    我在一个全新的 Sveltekit 项目中有这个非常简单的组件
  • Spring data mongodb 使用 MongoTemplate 从文档中删除属性

    我有一个如下所示的文档 id ObjectId 5864ddd8e38112fd70b89893 class com apic models UserReg name xxx email email protected cdn cgi l
  • REQUEST_URI 与显式路径和文件名不匹配

    真的很困惑 因为形式和语法看起来都很好 REQUEST URI 的 RewriteCond 与显式路径和文件名不匹配 隔离时 REQUEST FILENAME 的 RewriteCond 匹配得很好 我已经使用 phpinfo 验证了 RE
  • 尽管同时实现了 hashCode() 和 equals(),HashSet 仍添加了重复条目

    我有以下课程 class Point double x y constructor and other functions here public boolean equals Point p if p null return false
  • Node.js 存档器需要通过 glob 排除文件类型的语法

    使用 archiver js 适用于 Node js 我需要从递归 多子目录 存档中排除图像 这是我的代码 const zip archiver zip zlib level 9 const output await fs createWr
  • Python 脚本 - 连接到 SSH 并运行命令

    我已经知道有 Python 的 ssh 模块 但这不是我正在寻找的 我想要的是一个 python 脚本来执行以下操作 gt 连接到 用户输入 SSH 主机 gt 使用凭据 由用户提供 连接 gt 在 SSH 主机上运行命令 telnet 到
  • 使用 ST25 android SDK 进行 NFC 标签密码保护

    我正在与ST25 标签 更具体地说是 type5 标签 ST25DV64K 适用于 Android 的 ST25 SDK 有一些有趣的示例和教程 我仍然在努力使用文档末尾提供的代码示例here https www st com resour