向NDEF格式的Tag内写入数据:
NDEF格式的数据简单来说封装在一个NdefMessage里面,而一个NdefMessage里面包括一个或者多个NdefRecord,每个NdefRecord存储一种类型的数据,是一条独立的记录。在向Tag写入数据的时候,
1. 构建NdefRecord对象,将需要写入的数据传到NdefRecord中去。
NdefRecord nedfRecord = new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI,
"http://www.sohu.com".getBytes(Charset.forName("US-ASCII")),
new byte[0], new byte[0]);
2.将NdefRecord添加到NdefMessage中去
NdefMessage ndefMsg = new NdefMessage(nedfRecord);
3.将NdefMessage 写入到Tag中。
Tag tag = in.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Ndef ndef = Ndef.get(tag);
ndef.writeNdefMessage(ndefMsg);
这样就基本完成了数据的写入。
下面是一个完整的写入方法:
private void writeNdefToTag(Intent in){
Tag tag = in.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Ndef ndef = Ndef.get(tag);
try {
ndef.connect();
//创建若干条NdefRecord,每个NdefRecord包含一条记录,让后将NdefRecord数组传递给NdefMessage,再将NdefMessage写入Tag
//写入网址
NdefRecord nedfRecord = new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI,
"http://www.sohu.com".getBytes(Charset.forName("US-ASCII")),
new byte[0], new byte[0]);
//打开应用
NdefRecord nedfRecord2 = new NdefRecord( NdefRecord.TNF_MIME_MEDIA ,
"application/com.android.TyNfcTest".getBytes(Charset.forName("US-ASCII")),
new byte[0], "com.android.yufeimusic".getBytes(Charset.forName("US-ASCII")));
NdefMessage ndefMsg = new NdefMessage(nedfRecord);
ndef.writeNdefMessage(ndefMsg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
NdefRecord 有很多类型,借助于它,可以实现拨打电话,打开应用,打开网址等诸多功能,下面详细介绍各种方式。