我是RFID,NFC和DESfire卡的新手。我已经从desfire标签中读取了UID。 Bellow代码从defire标签中提供UID。
UID在text3中,但只有第7个字节。
public void onNewIntent(Intent intent) {
TextView text2 = (TextView) findViewById(R.id.textView2);
TextView text1 = (TextView) findViewById(R.id.textView1);
TextView text3 = (TextView) findViewById(R.id.textView3);
String action = intent.getAction();
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
Toast.makeText(this, "discovered", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Falied", Toast.LENGTH_SHORT).show();
}
byte[] tagResponse = null;
byte[] tagResponse1 = null;
byte[] tagResponse2 = null;
Tag desfire = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
isodep = IsoDep.get(desfire);
try {
isodep.connect();
} catch (IOException e) {
e.printStackTrace();
}
//byte[] test = new byte[] { (byte) 0xAA, (byte) 0x00 };
byte[] test=new byte[]{(byte)0x60};
byte[] test1=new byte[]{(byte)(0xAF)};
// byte[] test2=new byte[]{(byte)(90AF000000)};
try {
tagResponse = isodep.transceive(test);
tagResponse1 = isodep.transceive(test1);
tagResponse2 = isodep.transceive(test1);
text1.setText(bytesToHex(tagResponse));
text2.setText(bytesToHex(tagResponse1));
text3.setText(bytesToHex(tagResponse2));
} catch (IOException e) {
e.printStackTrace();
}
try {
isodep.close();
} catch (IOException e) {
e.printStackTrace();
}
我手中唯一可用于测试的标签是交通卡。我现在想要在我的运输卡内读取充电余额。它有可能吗?(我有一台支持nfc的平板电脑。)如果有可能我必须这样做吗?请给我一些问候或代码示例。我是DESFire阅读和写作的新人。
答案 0 :(得分:0)
通常无法从交通卡中读取余额,因为它被保存在锁定的卡片区域中。 您需要知道用于读取(并可能更改)信息的扇区的密钥和编号。
您可以尝试使用https://play.google.com/store/apps/details?id=at.mroland.android.apps.nfctaginfo来识别该部门。但是,如果没有密钥,则无法读取存储的数据。