gpt4 book ai didi

android - 将 URL 写入 NFC 芯片

转载 作者:行者123 更新时间:2023-11-29 01:27:20 24 4
gpt4 key购买 nike

我正在将 URL 写入 NFC 标签(在 URI 记录内)。我的问题是,当我读取芯片时,在“www”之后添加了“%20”。在 URL 的其余部分之前。

URL 如下所示:

www.%20google.ca

when it should actually look like this:

www.google.ca

The code below is the write function that I use to write the URL to the chip:

String copy = txtTagContent.getText().toString();
byte[] uriField = copy.getBytes(Charset.forName("US-ASCII"));
byte[] payload = new byte[uriField.length + 1]; //add 1 for the URI Prefix
payload[0] = 0x01; //prefixes http://www. to the URI
System.arraycopy(uriField, 0, payload, 1, uriField.length); //appends URI to payload
NdefRecord rtdUriRecord = new NdefRecord(
NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_URI, new byte[0], payload);
NdefMessage message = new NdefMessage(rtdUriRecord);
Ndef ndef = Ndef.get(tag);
ndef.connect();
ndef.writeNdefMessage(message);
ndef.close();

这个问题有解决办法吗?

最佳答案

无论是您将 URI 记录写入 NFC 标签的方法还是接收方都不会神奇地在您的 URL 中添加空格 (%20)。由于“http://www 。”由前缀字节 (0x01) 指定 空格可能已输入到文本字段 (txtTagContent)。您可以使用 trim() 方法简单地删除任何前导和尾随空格:

String copy = txtTagContent.getText().toString().trim();

您可能还想考虑已经包含特定前缀的 URL 字符串:

byte prefixByte = (byte)0x01;
if ("http://www.".equals(copy)) {
prefixByte = (byte)0x01;
copy = copy.substr(11);
} else if ("https://www.".equals(copy)) {
prefixByte = (byte)0x02;
copy = copy.substr(12);
} else if ("http://".equals(copy)) {
prefixByte = (byte)0x03;
copy = copy.substr(7);
} else if ("https://".equals(copy)) {
prefixByte = (byte)0x04;
copy = copy.substr(8);
}

最后,请注意 URI 记录中的 URL 必须采用 UTF-8 编码(而不是您当前使用的 US-ASCII):

byte[] uriField = copy.getBytes(Charset.forName("UTF-8"));
byte[] payload = new byte[uriField.length + 1];
payload[0] = prefixByte;
System.arraycopy(uriField, 0, payload, 1, uriField.length);
NdefRecord rtdUriRecord = new NdefRecord(
NdefRecord.TNF_WELL_KNOWN,
NdefRecord.RTD_URI,
new byte[0],
payload);

关于android - 将 URL 写入 NFC 芯片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33248718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com