使用标签的收发方法发送 SELECT PPSE 命令时出现标签丢失异常。
意图被传递给readTag
并且该方法正在从意图中获取标签,但是为 SELECT PPSE 命令 APDU 调用收发方法会导致标签丢失异常,而不是获取响应 APDU 消息:
public void readTag(Intent intent) {
String action = intent.getAction();
if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)) {
System.out.println("Got the tag");
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NfcA mfc = NfcA.get(tagFromIntent);
System.out.println(mfc);
try {
mfc.connect();
System.out.println(mfc.getTag());
System.out.println(mfc.getClass());
byte[] ATQA = mfc.getAtqa();
System.out.println(getHexString(ATQA));
System.out.println(mfc.getMaxTransceiveLength());
mfc.setTimeout(500000);
String value = "00A404000e325041592e5359532e444446303100"; //PPSE APDU value
String hex = value.toString();
byte[] data = HexToByte(hex);
byte[] response = mfc.transceive(data); //sending request
System.out.println(getHexString(response));
mfc.close();
} catch(Exception e) {
Toast.makeText(getBaseContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}
}
}