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 个字节。

更多详情请见