用安卓的nfc现在读取一个标签,是NfcA类型,TypeA类型的卡片。
得到的Tag是:android.nfc.tech.NfcA
try {
//ndefTag.connect();
nfcaTag.connect();//连接卡
String atqa="";
for(byte tmpByte:nfcaTag.getAtqa())
{
atqa+=tmpByte;
}
str+="tag Atqa:"+bytesToHexString(nfcaTag.getAtqa())+"\n";//获取卡的atqa
str+="tag SAK:"+nfcaTag.getSak()+"\n";//获取卡的sak
str+="max len:"+nfcaTag.getMaxTransceiveLength()+"\n";//获取卡片能接收的最大指令长度
byte[] cmd=null;
cmd=new byte[]{0x60,0x08,0xff,0xff,0xff,0xff,0xff,0xff};//卡请求
//TypeA 类型的第一个数据是0x60,我要想读的扇区是第2扇区的第0块,
//也就是第8块的数据,KeyA密码是六个字节的0xff,0xff,0xff,0xff,0xff,0xff
str+="Card Number:"+nfcaTag.transceive(cmd);
//发送命令到卡片(找不到这个标签扇区读取指令,有知道的同学告诉一声我们的卡是ISO/IEC 14443 typeA标准的),主要就是这个方法得不到返回的结果。因为指令不正确
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
nfcaTag.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
cardNoTxt.setText(str);