Pregunta

Tengo una tarjeta inteligente EMV con la que quiero comunicarme con mi teléfono móvil. La comunicación en sí funciona sin problemas a través de ISODEP, pero no puedo averiguar cómo puedo obtener el ATR. Por lo que sé, la intención debe contener la ATR, ¿puede alguien decirme el código que necesito, por lo tanto?

O si esto no es posible, tal vez alguien sepa cómo calentar la tarjeta con un comando como seleccionar donde la respuesta es el ATR.

¿Fue útil?

Solución

Las tarjetas sin contacto no tienen un ATR.Sin embargo, puede estar interesado en los bytes históricos de la ATS (respuesta a seleccionar).Puede recuperarlos llamando getHistoricalBytes() :

Tag tag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG));
IsoDep iso = IsoDep.get(tag);
NfcA nfcA = NfcA.get(tag);
if (nfcA == null || iso == null)
   return; // not an IsoDep+NfcA tag
byte[] histBytes = iso.getHistoricalBytes();
...

Tenga en cuenta que esto solo funciona para las etiquetas de tipo A ISO 14443 (NfcA).Para las etiquetas tipo B (NfcB), es posible que desee investigar getHiLayerResponse() .

Otros consejos

Tarjeta sin contacto devolver ATR.Sin embargo, no puede obtener ATR de la API actual de Android NFC.La API de Android NFC solo devuelve bytes históricos de ATR.

La razón por la que la tarjeta sin contacto devuelve a ATR: Tenga en cuenta que ATR es 7816 Respuesta para restablecer.El lector (teléfono NFC en este caso) habla con tarjetas inteligentes utilizando ISO 7816 (T= CL) APDU Exchange, que se transporta a través de la interfaz sin contacto ISO 14443-4.Ya que hay ISO 7816 en este caso, obtendrá ATR.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top