Fields Summary |
---|
private final NfcAdapterExtras | mExtras |
private final android.os.Binder | mToken |
private static final int | EE_ERROR_IO |
private static final int | EE_ERROR_ALREADY_OPEN |
private static final int | EE_ERROR_INIT |
private static final int | EE_ERROR_LISTEN_MODE |
private static final int | EE_ERROR_EXT_FIELD |
private static final int | EE_ERROR_NFC_DISABLED |
public static final String | ACTION_AID_SELECTEDBroadcast Action: An ISO-DEP AID was selected.
This happens as the result of a 'SELECT AID' command from an
external NFC reader/writer.
Always contains the extra field {@link #EXTRA_AID}
Requires the {@link android.Manifest.permission#WRITE_SECURE_SETTINGS} permission
to receive. |
public static final String | EXTRA_AIDMandatory byte array extra field in {@link #ACTION_AID_SELECTED}.
Contains the AID selected. |
public static final String | ACTION_APDU_RECEIVEDBroadcast action: A filtered APDU was received.
This happens when an APDU of interest was matched by the Nfc adapter,
for instance as the result of matching an externally-configured filter.
The filter configuration mechanism is not currently defined.
Always contains the extra field {@link EXTRA_APDU_BYTES}. |
public static final String | EXTRA_APDU_BYTESMandatory byte array extra field in {@link #ACTION_APDU_RECEIVED}.
Contains the bytes of the received APDU. |
public static final String | ACTION_EMV_CARD_REMOVALBroadcast action: An EMV card removal event was detected. |
public static final String | ACTION_MIFARE_ACCESS_DETECTEDBroadcast action: An adapter implementing MIFARE Classic via card
emulation detected that a block has been accessed.
This may only be issued for the first block that the reader
authenticates to.
May contain the extra field {@link #EXTRA_MIFARE_BLOCK}. |
public static final String | EXTRA_MIFARE_BLOCKOptional integer extra field in {@link #ACTION_MIFARE_ACCESS_DETECTED}.
Provides the block number being accessed. If not set, the block
number being accessed is unknown. |
Methods Summary |
---|
public void | close()Close the NFC Execution Environment on its contact interface.
Requires the {@link android.Manifest.permission#WRITE_SECURE_SETTINGS} permission.
try {
throwBundle(mExtras.getService().close(mExtras.mPackageName, mToken));
} catch (RemoteException e) {
mExtras.attemptDeadServiceRecovery(e);
throw new IOException("NFC Service was dead");
}
|
public void | open()Open the NFC Execution Environment on its contact interface.
Opening a channel to the the secure element may fail
for a number of reasons:
- NFC must be enabled for the connection to the SE to be opened.
If it is disabled at the time of this call, an {@link EeNfcDisabledException}
is thrown.
- Only one process may open the secure element at a time. Additionally,
this method is not reentrant. If the secure element is already opened,
either by this process or by a different process, an {@link EeAlreadyOpenException}
is thrown.
- If the connection to the secure element could not be initialized,
an {@link EeInitializationException} is thrown.
- If the secure element or the NFC controller is activated in listen
mode - that is, it is talking over the contactless interface - an
{@link EeListenModeException} is thrown.
- If the NFC controller is in a field powered by a remote device,
such as a payment terminal, an {@link EeExternalFieldException} is
thrown.
All other NFC functionality is disabled while the NFC-EE is open
on its contact interface, so make sure to call {@link #close} once complete.
Requires the {@link android.Manifest.permission#WRITE_SECURE_SETTINGS} permission.
try {
Bundle b = mExtras.getService().open(mExtras.mPackageName, mToken);
throwBundle(b);
} catch (RemoteException e) {
mExtras.attemptDeadServiceRecovery(e);
throw new EeIOException("NFC Service was dead, try again");
}
|
private static void | throwBundle(android.os.Bundle b)
switch (b.getInt("e")) {
case EE_ERROR_NFC_DISABLED:
throw new EeNfcDisabledException(b.getString("m"));
case EE_ERROR_IO:
throw new EeIOException(b.getString("m"));
case EE_ERROR_INIT:
throw new EeInitializationException(b.getString("m"));
case EE_ERROR_EXT_FIELD:
throw new EeExternalFieldException(b.getString("m"));
case EE_ERROR_LISTEN_MODE:
throw new EeListenModeException(b.getString("m"));
case EE_ERROR_ALREADY_OPEN:
throw new EeAlreadyOpenException(b.getString("m"));
}
|
public byte[] | transceive(byte[] in)Send raw commands to the NFC-EE and receive the response.
Requires the {@link android.Manifest.permission#WRITE_SECURE_SETTINGS} permission.
Bundle b;
try {
b = mExtras.getService().transceive(mExtras.mPackageName, in);
} catch (RemoteException e) {
mExtras.attemptDeadServiceRecovery(e);
throw new IOException("NFC Service was dead, need to re-open");
}
throwBundle(b);
return b.getByteArray("out");
|