【发布时间】:2018-06-09 06:41:04
【问题描述】:
我正在尝试将 URI/URL 写入 NFC 标签。我能够成功地做到这一点,但是有一个前缀会自动添加到我编写的 URI 中。
例如:如果我要写的URL是“https://indies.net.in”,那么标签上实际写的URL是“https://www.enindies.net.in” ”。
谁能告诉我我在这里做错了什么?
创建消息:
private NdefMessage createNdefMessage(String content){
NdefRecord ndefRecord= createTextRecord(content);
NdefMessage ndefMessage=new NdefMessage(new NdefRecord[]{ndefRecord});
return ndefMessage;
}
创建 URL 记录:
private NdefRecord createUrlRecord(String content) {
try{
byte[] language;
language= Locale.getDefault().getLanguage().getBytes();
final byte[] text=content.getBytes("UTF-8");
final int languageSize=language.length;
final int textLength=text.length;
final ByteArrayOutputStream payload= new ByteArrayOutputStream(1+languageSize+textLength);
payload.write((byte) (languageSize & 0x1F));
payload.write(language,0,languageSize);
payload.write(text,0,textLength);
return new NdefRecord(NdefRecord.TNF_WELL_KNOWN,NdefRecord.RTD_URI,new byte[0],payload.toByteArray());
}catch (Exception e){
Log.e("createTextRecord",e.getMessage());
}
return null;
}
写信息:
private void writeNdefMessage(Tag tag, NdefMessage ndefMessage){
try {
if (tag== null){
Toast.makeText(this," Tag object cannot be null",Toast.LENGTH_SHORT).show();
return;
}
Ndef ndef=Ndef.get(tag);
if (ndef==null){
formatTag(tag,ndefMessage);
} else {
ndef.connect();
if (!ndef.isWritable()){
Toast.makeText(this," Tag cannot be Written",Toast.LENGTH_SHORT).show();
ndef.close();
return;
}
ndef.writeNdefMessage(ndefMessage);
ndef.close();
Toast.makeText(this," Tag Written!",Toast.LENGTH_SHORT).show();
}
【问题讨论】:
标签: android format uri nfc ndef