【发布时间】:2017-10-09 14:08:34
【问题描述】:
我在我的应用程序代码中创建了一个 NFC 读/写部分,其中:
READ 负责处理数据并触发网络浏览器:
ndef.connect()
val ndefMessage = ndef.ndefMessage
if (ndefMessage.records != null && ndefMessage.records.isNotEmpty()) {
message = String(it.records[0].payload)
}
ndef.close()
WRITE 将 URL 写入 NFC 标签:
ndef.connect()
val mimeRecord = NdefRecord.createUri(url)
ndef.writeNdefMessage(NdefMessage(mimeRecord))
ndef.close()
由于某种神秘原因,当我编写 URL“http://www.google.com”时,我的 message 变量(在读取带有该 URL 的标签后)仅包含“google.com”。我不知道为什么 URL 的其余部分(“http://www.”)被删除/省略。你能告诉我发生了什么事吗?我的错在哪里?
【问题讨论】:
-
澄清一下,您正在将变量
url写入标签,其值为http://www.google.com,而当您读取它时,返回的只是google.com?你试过其他网址吗?查看 url 的创建位置可能会有所帮助。 -
是的,目前它的工作原理与您所写的完全一样。是的,我确实尝试了不同的 URL - 没有区别:C 我从
EditText小部件中读取 URL 并将其传递给我的TagManager -
我不能把这个作为答案,因为它更像是一个理论,但 NFC 信息必须简短而简洁。 Ndef 库很有可能故意缩短 URL,如果它以
http://www开头,因为那是一种“默认”URI。 -
网址不是
http://www.google.com!如果可以的话... createUri 确实可以规范您的字符串,但它不会删除http://www.这发生在其他地方。见:developer.android.com/reference/android/nfc/… -
“是的,目前它的工作原理与您所写的完全一样。”好的,我退出了这个讨论。如果你甚至不明白你回答的人是不可能帮助你的。无论如何,你也不明白我评论的重点。祝你的问题好运! - 此答案与已删除的评论有关 -