byte[] SELECT = { (byte) 0x00, // CLA Class (byte) 0xA4, // INS Instruction (byte) 0x04, // P1 Parameter 1 (byte) 0x00, // P2 Parameter 2 (byte) 0x0A, // Length 0x63,0x64,0x63,0x00,0x00,0x00,0x00,0x32,0x32,0x31 // AID }; Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); IsoDep tag = IsoDep.get(tagFromIntent); tag.connect(); byte[] result = tag.transceive(SELECT); if (!(result[0] == (byte) 0x90 && result[1] == (byte) 0x00)) throw new IOException("could not select applet");
card.connect(); ... byte[] response = card.transceive(apduBytes);
IsoDep iso = IsoDep.get(tag); iso.connect(); iso.setTimeOut(5000); // 5 sec time out iso.transceive(apduCommand); // now send your command
@Override public void run() { try { mIsoDep.connect(); mUiCallbacks.clearMessages(); mUiCallbacks.onOkay(mContext.getString(R.string.manual_connected)); mUiCallbacks.setUserSelectListener(this); try { synchronized(mDisconnectWaiter) { mDisconnectWaiter.wait(); } Log.d(TAG, "exiting manual select thread!"); } catch (InterruptedException e) { // should not happen Log.e(TAG, "interrupted exception!"); } } catch (TagLostException e) { mUiCallbacks.onError(mContext.getString(R.string.tag_lost_err)); } catch (IOException e) { mUiCallbacks.onError(e.getMessage()); } finally { try { mIsoDep.close(); } catch (IOException e) { } } }
@Override public void run() { boolean err = false; try { mIsoDep.connect(); Log.d(TAG, "select app: " + mAid); ResponseApdu rspApdu = sendAndRcv(new SelectApdu(mAidBytes), true); if (rspApdu.isStatus(SW_NO_ERROR)) { mUiCallbacks.onOkay(mContext.getString(R.string.select_app_ok, rspApdu.getSW1SW2())); } else { mUiCallbacks.onError( mContext.getString(R.string.select_app_err, rspApdu.getSW1SW2(), ApduParser.parse(false, rspApdu.toBytes()))); } mIsoDep.close(); } catch (TagLostException e) { mUiCallbacks.onError(mContext.getString(R.string.tag_lost_err)); err = true; } catch (IOException e) { mUiCallbacks.onError(e.getMessage()); err = true; } mUiCallbacks.onFinish(err); } }
try { isoDep.connect();
@Override public void run() { try { mIsoDep.connect(); // select ppse if (selectPpse()) { if (mTestMode == Launcher.TEST_MODE_APP_SELECT) { selectApp(mAid); } else if (mPpseDdf != null) { // process each app found in ppse select response for (EMVApp app : mPpseDdf.getEMVApps()) { if (selectApp(app)) { if (initiateAppProcessing(app)) { readAppData(app); } } } } } mIsoDep.close(); } catch (TagLostException e) { mUiCallbacks .onError(mContext.getString(R.string.tag_lost_err)); } catch (IOException e) { mUiCallbacks.onError(e.getMessage()); } catch (TLVException e) { mUiCallbacks.onError(e.getMessage()); } }