Android,Kotlin:检查转换为字符串的 NdefMessage 是否等于另一个字符串
Android, Kotlin: Checking if an NdefMessage converted to a String is equal to another String
我正在尝试检查从 NFC 标签读取的值是否等于字符串。标签中写入的值被正确提取,但是当我尝试将该值与另一个字符串进行比较时,如在第二个“if”语句中,它总是会进入“else”块。
private fun processNdefMessages(ndefMessages: Array<NdefMessage?>) {
var msg = ""
for (curMsg in ndefMessages) {
if (curMsg != null) {
// get the text written in the tag
msg = String(curMsg.getRecords().get(0).getPayload())
}
}
textFromTag = msg
if (textFromTag.equals("enjacket1")) {
Toast.makeText(applicationContext, "jacket1", Toast.LENGTH_LONG).show()
} else {
Toast.makeText(applicationContext, "$textFromTag", Toast.LENGTH_LONG).show()
}
编辑:另外,当我从标签中读取负载时,它总是以“en”开头,然后是实际的字符串。这就是我将 textFromTag
与“enjacket1”进行比较的原因。我试图消除前两个字符,但似乎没有任何改变...
这可能是因为语言 en
字符前面多了一个字节来指定语言长度,这可能是不可打印的。
因为 NFC 文本被编码为:
- 语言长度(1字节)+语言(n字节)+文本
因此请阅读第一个字节并 trim 相应地或快速修改 trim 英文消息的前 3 个字节。
更多详情请见
我正在尝试检查从 NFC 标签读取的值是否等于字符串。标签中写入的值被正确提取,但是当我尝试将该值与另一个字符串进行比较时,如在第二个“if”语句中,它总是会进入“else”块。
private fun processNdefMessages(ndefMessages: Array<NdefMessage?>) {
var msg = ""
for (curMsg in ndefMessages) {
if (curMsg != null) {
// get the text written in the tag
msg = String(curMsg.getRecords().get(0).getPayload())
}
}
textFromTag = msg
if (textFromTag.equals("enjacket1")) {
Toast.makeText(applicationContext, "jacket1", Toast.LENGTH_LONG).show()
} else {
Toast.makeText(applicationContext, "$textFromTag", Toast.LENGTH_LONG).show()
}
编辑:另外,当我从标签中读取负载时,它总是以“en”开头,然后是实际的字符串。这就是我将 textFromTag
与“enjacket1”进行比较的原因。我试图消除前两个字符,但似乎没有任何改变...
这可能是因为语言 en
字符前面多了一个字节来指定语言长度,这可能是不可打印的。
因为 NFC 文本被编码为:
- 语言长度(1字节)+语言(n字节)+文本
因此请阅读第一个字节并 trim 相应地或快速修改 trim 英文消息的前 3 个字节。
更多详情请见