如何读取含有NDEF数据的标签内容:
当Activity捕获意图并启动时,会有一个intent对象传递过来,其中就包含了标签上的信息:
- EXTRA_TAG (必选): 一个代表读取到的标签的 Tag 对象.
- EXTRA_NDEF_MESSAGES (可选): 从标签的 NDEF messages 中读取到的一个数据集合. 这个信息是强制的。
- {@link android.nfc.NfcAdapter#EXTRA_ID (可选): 标签的低级别的ID.
首先用 Parcelable[] rawArray = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 得到Parcelable对象存储标签里面的信息,然后用NdefMessage
存储这些信息。
一个读取标签信息的方法:
private String readFromTagDetail(Intent intent){
NdefMessage[] readResult = null;
Parcelable[] rawArray = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if(rawArray != null){
readResult = new NdefMessage[rawArray.length];
for (int i = 0; i < rawArray.length; i++) {
readResult[i] = (NdefMessage) rawArray[i];
}
}
return readResult.toString();
}
NdefMessage[] readResult = null;
Parcelable[] rawArray = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if(rawArray != null){
readResult = new NdefMessage[rawArray.length];
for (int i = 0; i < rawArray.length; i++) {
readResult[i] = (NdefMessage) rawArray[i];
}
}
return readResult.toString();
}
一个读取标签的方法:
private String readFromTag(Intent intent){
//从一个intent得到一个标签对象
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Parcelable[] rawArray = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage mNdefMsg = (NdefMessage)rawArray[0];
NdefRecord mNdefRecord = mNdefMsg.getRecords()[0];
try {
if(mNdefRecord != null){
String readResult = new String(mNdefRecord.getPayload(),"UTF-8");
return readResult;
}
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
};
return null;
}
//从一个intent得到一个标签对象
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Parcelable[] rawArray = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage mNdefMsg = (NdefMessage)rawArray[0];
NdefRecord mNdefRecord = mNdefMsg.getRecords()[0];
try {
if(mNdefRecord != null){
String readResult = new String(mNdefRecord.getPayload(),"UTF-8");
return readResult;
}
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
};
return null;
}