- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我根据示例制作了一个应用程序,用于在 Android 上编写 NFC 代码。我的标签是 NXP NTAG216。
但我有一个问题:用我的应用程序编写标签后,NXP 的 TagWriter 应用程序将数据显示为“未知内容”,如下所示:
但是,当我使用 NXP TagWriter 将值写入“纯文本”时,我得到:
这是我的 onNewIntent 代码:
@Override
protected void onNewIntent(Intent intent) {
// Tag writing mode
String zawartosc = "Data from field";
if (mWriteMode && NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NdefRecord record = NdefRecord.createMime(zawartosc, zawartosc.getBytes(Charset.forName("UTF-8")));
NdefMessage message = new NdefMessage(new NdefRecord[]{record});
if (writeTag(message, detectedTag)) {
Toast.makeText(this, "Success", Toast.LENGTH_LONG)
.show();
}
}
}
写标签:
public boolean writeTag(NdefMessage message, Tag tag) {
int size = message.toByteArray().length;
try {
Ndef ndef = Ndef.get(tag);
if (ndef != null) {
ndef.connect();
if (!ndef.isWritable()) {
Toast.makeText(getApplicationContext(),
"Unwritable",
Toast.LENGTH_SHORT).show();
return false;
}
if (ndef.getMaxSize() < size) {
Toast.makeText(getApplicationContext(),
"Text is too short",
Toast.LENGTH_SHORT).show();
return false;
}
ndef.writeNdefMessage(message);
return true;
} else {
NdefFormatable format = NdefFormatable.get(tag);
if (format != null) {
try {
format.connect();
format.format(message);
return true;
} catch (IOException e) {
return false;
}
} else {
return false;
}
}
} catch (Exception e) {
return false;
}
}
有没有办法以某种方式将内容类型更改为 NXP TagWriter 写入的内容类型?当它是未知类型时,我在稍后正确阅读代码时遇到问题。
最佳答案
您得到的正是您写入标签的内容,一个 MIME 类型记录,其值设置为 UTF-8 编码字符串“{number_id:"test12"}”并且 MIME 类型设置为完全相同(并且无效值。您在创建 MIME 类型记录期间执行了此操作:
NdefRecord record = NdefRecord.createMime(zawartosc, zawartosc.getBytes(Charset.forName("UTF-8")));
在这里,您将 createMime()
的 mimeType
参数和 mimeData
参数都设置为字符串 zawartosc
.
您真正想要做的是创建一个纯文本记录。这可以是 NFC 论坛文本记录,也可以是 MIME 类型设置为“text/plain”的 MIME 类型记录。 NFC 论坛文本记录也是 NXP TagWriter 在选择“纯文本”选项时创建的记录类型。
在 Android 中,您可以使用 createTextRecord()
辅助方法创建文本记录:
NdefRecord record = NdefRecord.createTextRecord("en", zawartosc);
这适用于 API 级别 21+。请参阅 [Method NdefRecord.createTextRecord(“en” , “string”) 在 API 级别 21 以下不工作( Method NdefRecord.createTextRecord("en" , "string") not working below API level 21 ) 实现适用于早期 Android 版本的 createTextRecord()
。
如果您更喜欢使用 MIME 类型的记录,您还可以使用:
NdefRecord record = NdefRecord.createMime("text/plain", zawartosc.getBytes(Charset.forName("US-ASCII")));
这将创建一个类型为“text/plain”的 MIME 类型记录,其中包含字符串 zawartosc
的 ASCII 编码值。请注意,text/plain 被定义为包含 ASCII 编码的纯文本数据。如果要使用 UTF-8 编码,通常会在类型名称中指定显式编码:
NdefRecord record = NdefRecord.createMime("text/plain; encoding=utf-8", zawartosc.getBytes(Charset.forName("UTF-8")));
最后,我想知道您是否真的想在文本记录中传输结构化数据(例如 JSON 或类似数据)。文本记录表示人类可读的纯文本。传输特定于应用程序的结构化数据的更好方法是 NFC 论坛外部类型或自定义 MIME 类型记录。
关于Android写NFC代码导致 "unknown content"类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43607313/
这是我的代码 14 20 {"Confirm Email"} 21 在第 17 行我得到错误 Type '{ pathname: string; user: { em
这是我的代码 14 20 {"Confirm Email"} 21 在第 17 行我得到错误 Type '{ pathname: string; user: { em
这个问题已经有答案了: How do I compare strings in Java? (23 个回答) 已关闭 8 年前。 为什么 KeyEvent.getKeyText(0).substrin
我正在尝试 Rust 的新 wasm32-unknown-unknown 目标,我在调用数学函数(例如 sin、cos、exp、atan2)时遇到问题。 cargo .toml: [package]
当我为 spring-boot 创建启动项目时,我在 pom 文件中收到此错误。这只是为了创建一个基本的 Spring Boot 项目 Project build error: Invalid pac
我已经订阅了我想要传输的数据。但不知何故它不起作用。我收到此错误: The property pipe is not available for type "OperatorFunction" 这是我
运行以下查询时。select * from surgerys where to_char(dt_surgery ,'DD-MM-YYYY' ) = to_char('12-02-2012','DD-M
我在运行存储过程时遇到以下异常: com.microsoft.sqlserver.jdbc.SQLServerException:不支持从 UNKNOWN 到 UNKNOWN 的转换。 过程定义如下:
我尝试运行以下代码。顺便说一句,我对 python 和 sklearn 都是新手。 import pandas as pd import numpy as np from sklearn.linear
我已经阅读了关于未知类型的官方文档,但我很难真正理解它是如何工作的。 人们可以在文档中读到:“在没有首先断言或缩小到更具体的类型之前,不允许对未知进行任何操作。” 但如果我有这个功能: const f
我正在尝试在Mac OS中设置Hadoop 2.6.0 我正在关注这篇文章: http://hadoop.apache.org/docs/r2.4.0/hadoop-project-dist/hado
配置 Nexus docker 注册表和代理“dockerhub-proxy”后,如下所述: https://help.sonatype.com/repomanager3/formats/docker
我收到此错误 - “ValueError:未知标签类型:'unknown'” 我已经在网上搜索但无法摆脱这个错误,顺便说一句,我是 python 的新手:) 我的数据有 5 行 22 列,最后一列是标
使用 SHA256 摘要标识符 拉取图像失败 最佳答案 不幸的是,这是 DockerHub 删除 Docker 1.9 守护进程的向后兼容性的副作用。当使用 Docker 1.10 推送图像时,较旧的
我是 postgresql 的新手,正在尝试使用全文搜索 to_tsvector但是我遇到了错误。 SQL 和错误 SELECT to_tsvector('english', 'The quick b
每当我这样做时 npm run watch ,第一次编译工作正常 - 但经过几次编译后,我最终会得到这个错误: 95% emitting unnamed compat pluginError: UNK
在一个新的 Angular 应用程序中,我收到以下错误:Error from chokidar : Error: UNKNOWN: unknown error, watch我已经删除并重新安装 nod
使用 Typescipt 4.x.x 我写了一些代码来实现其他语言 Elm/Rust/Haskell 中常用的 Maybe/Option 类型。 我想写一个可以接受映射类型的通用函数 type MyM
const submitted = useSelector((state) => state.post.submitted) 对于上面的状态。我得到错误: (参数)状态:未知对象的类型为“未知”。 这
我正在尝试将多架构 docker 镜像推送到 docker hub 并遇到错误(在 https://github.com/docker/distribution/issues/3100 处打开了 do
我是一名优秀的程序员,十分优秀!