1// Signature format: 2.0 2package android.nfc { 3 4 public final class NfcAdapter { 5 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean addNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler, String[]); 6 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disable(boolean); 7 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enableReaderOption(boolean); 8 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enableSecureNfc(boolean); 9 method public int getAdapterState(); 10 method @NonNull public android.nfc.NfcOemExtension getNfcOemExtension(); 11 method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public java.util.Map<java.lang.String,java.lang.Boolean> getTagIntentAppPreferenceForUser(int); 12 method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public boolean isControllerAlwaysOn(); 13 method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public boolean isControllerAlwaysOnSupported(); 14 method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public void registerControllerAlwaysOnListener(@NonNull java.util.concurrent.Executor, @NonNull android.nfc.NfcAdapter.ControllerAlwaysOnListener); 15 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void registerNfcVendorNciCallback(@NonNull java.util.concurrent.Executor, @NonNull android.nfc.NfcAdapter.NfcVendorNciCallback); 16 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean removeNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler); 17 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public int sendVendorNciMessage(int, @IntRange(from=0, to=15) int, @IntRange(from=0) int, @NonNull byte[]); 18 method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public boolean setControllerAlwaysOn(boolean); 19 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setReaderModePollingEnabled(boolean); 20 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public int setTagIntentAppPreferenceForUser(int, @NonNull String, boolean); 21 method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public void unregisterControllerAlwaysOnListener(@NonNull android.nfc.NfcAdapter.ControllerAlwaysOnListener); 22 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void unregisterNfcVendorNciCallback(@NonNull android.nfc.NfcAdapter.NfcVendorNciCallback); 23 field public static final String ACTION_REQUIRE_UNLOCK_FOR_NFC = "android.nfc.action.REQUIRE_UNLOCK_FOR_NFC"; 24 field @RequiresPermission(android.Manifest.permission.SHOW_CUSTOMIZED_RESOLVER) public static final String ACTION_SHOW_NFC_RESOLVER = "android.nfc.action.SHOW_NFC_RESOLVER"; 25 field public static final String EXTRA_RESOLVE_INFOS = "android.nfc.extra.RESOLVE_INFOS"; 26 field @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static final int FLAG_SET_DEFAULT_TECH = 1073741824; // 0x40000000 27 field public static final int MESSAGE_TYPE_COMMAND = 1; // 0x1 28 field public static final int SEND_VENDOR_NCI_STATUS_FAILED = 3; // 0x3 29 field public static final int SEND_VENDOR_NCI_STATUS_MESSAGE_CORRUPTED = 2; // 0x2 30 field public static final int SEND_VENDOR_NCI_STATUS_REJECTED = 1; // 0x1 31 field public static final int SEND_VENDOR_NCI_STATUS_SUCCESS = 0; // 0x0 32 field public static final int TAG_INTENT_APP_PREF_RESULT_PACKAGE_NOT_FOUND = -1; // 0xffffffff 33 field public static final int TAG_INTENT_APP_PREF_RESULT_SUCCESS = 0; // 0x0 34 field public static final int TAG_INTENT_APP_PREF_RESULT_UNAVAILABLE = -2; // 0xfffffffe 35 } 36 37 public static interface NfcAdapter.ControllerAlwaysOnListener { 38 method public void onControllerAlwaysOnChanged(boolean); 39 } 40 41 public static interface NfcAdapter.NfcUnlockHandler { 42 method public boolean onUnlockAttempted(android.nfc.Tag); 43 } 44 45 public static interface NfcAdapter.NfcVendorNciCallback { 46 method public void onVendorNciNotification(@IntRange(from=9, to=15) int, int, @NonNull byte[]); 47 method public void onVendorNciResponse(@IntRange(from=0, to=15) int, int, @NonNull byte[]); 48 } 49 50 public final class NfcOemExtension { 51 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void clearPreference(); 52 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public int forceRoutingTableCommit(); 53 method @NonNull public java.util.Map<java.lang.String,java.lang.Integer> getActiveNfceeList(); 54 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public long getMaxPausePollingTimeoutMills(); 55 method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public android.nfc.RoutingStatus getRoutingStatus(); 56 method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public java.util.List<android.nfc.NfcRoutingTableEntry> getRoutingTable(); 57 method @NonNull public android.nfc.T4tNdefNfcee getT4tNdefNfcee(); 58 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean hasUserEnabledNfc(); 59 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean isAutoChangeEnabled(); 60 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean isTagPresent(); 61 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void maybeTriggerFirmwareUpdate(); 62 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void overwriteRoutingTable(int, int, int, int); 63 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public int pausePolling(long); 64 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void registerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.nfc.NfcOemExtension.Callback); 65 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public int resumePolling(); 66 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setAutoChangeEnabled(boolean); 67 method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public void setControllerAlwaysOnMode(int); 68 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void synchronizeScreenState(); 69 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void triggerInitialization(); 70 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void unregisterCallback(@NonNull android.nfc.NfcOemExtension.Callback); 71 field public static final int COMMIT_ROUTING_STATUS_FAILED = 3; // 0x3 72 field public static final int COMMIT_ROUTING_STATUS_FAILED_UPDATE_IN_PROGRESS = 6; // 0x6 73 field public static final int COMMIT_ROUTING_STATUS_OK = 0; // 0x0 74 field public static final int DISABLE = 0; // 0x0 75 field public static final int ENABLE_DEFAULT = 1; // 0x1 76 field public static final int ENABLE_EE = 3; // 0x3 77 field public static final int ENABLE_TRANSPARENT = 2; // 0x2 78 field public static final int HCE_ACTIVATE = 1; // 0x1 79 field public static final int HCE_DATA_TRANSFERRED = 2; // 0x2 80 field public static final int HCE_DEACTIVATE = 3; // 0x3 81 field public static final int NFCEE_TECH_A = 1; // 0x1 82 field public static final int NFCEE_TECH_B = 2; // 0x2 83 field public static final int NFCEE_TECH_F = 4; // 0x4 84 field public static final int NFCEE_TECH_NONE = 0; // 0x0 85 field public static final int POLLING_STATE_CHANGE_ALREADY_IN_REQUESTED_STATE = 2; // 0x2 86 field public static final int POLLING_STATE_CHANGE_SUCCEEDED = 1; // 0x1 87 field public static final int STATUS_OK = 0; // 0x0 88 field public static final int STATUS_UNKNOWN_ERROR = 1; // 0x1 89 } 90 91 public static interface NfcOemExtension.Callback { 92 method public void onApplyRouting(@NonNull java.util.function.Consumer<java.lang.Boolean>); 93 method public void onBootFinished(int); 94 method public void onBootStarted(); 95 method public void onCardEmulationActivated(boolean); 96 method public void onDisableFinished(int); 97 method public void onDisableRequested(@NonNull java.util.function.Consumer<java.lang.Boolean>); 98 method public void onDisableStarted(); 99 method public void onEeListenActivated(boolean); 100 method public void onEeUpdated(); 101 method public void onEnableFinished(int); 102 method public void onEnableRequested(@NonNull java.util.function.Consumer<java.lang.Boolean>); 103 method public void onEnableStarted(); 104 method public void onExtractOemPackages(@NonNull android.nfc.NdefMessage, @NonNull java.util.function.Consumer<java.util.List<java.lang.String>>); 105 method public void onGetOemAppSearchIntent(@NonNull java.util.List<java.lang.String>, @NonNull java.util.function.Consumer<android.content.Intent>); 106 method public void onHceEventReceived(int); 107 method public void onLaunchHceAppChooserActivity(@NonNull String, @NonNull java.util.List<android.nfc.cardemulation.ApduServiceInfo>, @NonNull android.content.ComponentName, @NonNull String); 108 method public void onLaunchHceTapAgainDialog(@NonNull android.nfc.cardemulation.ApduServiceInfo, @NonNull String); 109 method public void onLogEventNotified(@NonNull android.nfc.OemLogItems); 110 method public void onNdefMessage(@NonNull android.nfc.Tag, @NonNull android.nfc.NdefMessage, @NonNull java.util.function.Consumer<java.lang.Boolean>); 111 method public void onNdefRead(@NonNull java.util.function.Consumer<java.lang.Boolean>); 112 method public void onReaderOptionChanged(boolean); 113 method public void onRfDiscoveryStarted(boolean); 114 method public void onRfFieldDetected(boolean); 115 method public void onRoutingChanged(@NonNull java.util.function.Consumer<java.lang.Boolean>); 116 method public void onRoutingTableFull(); 117 method public void onStateUpdated(int); 118 method public void onTagConnected(boolean); 119 method public void onTagDispatch(@NonNull java.util.function.Consumer<java.lang.Boolean>); 120 } 121 122 public abstract class NfcRoutingTableEntry { 123 method public int getNfceeId(); 124 method public int getRouteType(); 125 method public int getType(); 126 field public static final int TYPE_AID = 0; // 0x0 127 field public static final int TYPE_PROTOCOL = 1; // 0x1 128 field public static final int TYPE_SYSTEM_CODE = 3; // 0x3 129 field public static final int TYPE_TECHNOLOGY = 2; // 0x2 130 } 131 132 public final class OemLogItems implements android.os.Parcelable { 133 method public int describeContents(); 134 method public int getAction(); 135 method public int getCallingPid(); 136 method @Nullable public byte[] getCommandApdu(); 137 method public int getEvent(); 138 method @Nullable public byte[] getResponseApdu(); 139 method @Nullable public java.time.Instant getRfFieldEventTimeMillis(); 140 method @Nullable public android.nfc.Tag getTag(); 141 method public void writeToParcel(@NonNull android.os.Parcel, int); 142 field @NonNull public static final android.os.Parcelable.Creator<android.nfc.OemLogItems> CREATOR; 143 field public static final int EVENT_DISABLE = 2; // 0x2 144 field public static final int EVENT_ENABLE = 1; // 0x1 145 field public static final int EVENT_UNSET = 0; // 0x0 146 field public static final int LOG_ACTION_HCE_DATA = 516; // 0x204 147 field public static final int LOG_ACTION_NFC_TOGGLE = 513; // 0x201 148 field public static final int LOG_ACTION_RF_FIELD_STATE_CHANGED = 1; // 0x1 149 field public static final int LOG_ACTION_SCREEN_STATE_CHANGED = 518; // 0x206 150 field public static final int LOG_ACTION_TAG_DETECTED = 3; // 0x3 151 } 152 153 public class RoutingStatus { 154 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public int getDefaultIsoDepRoute(); 155 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public int getDefaultOffHostRoute(); 156 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public int getDefaultRoute(); 157 } 158 159 public class RoutingTableAidEntry extends android.nfc.NfcRoutingTableEntry { 160 method @NonNull public String getAid(); 161 } 162 163 public class RoutingTableProtocolEntry extends android.nfc.NfcRoutingTableEntry { 164 method public int getProtocol(); 165 field public static final int PROTOCOL_ISO_DEP = 4; // 0x4 166 field public static final int PROTOCOL_NDEF = 7; // 0x7 167 field public static final int PROTOCOL_NFC_DEP = 5; // 0x5 168 field public static final int PROTOCOL_T1T = 1; // 0x1 169 field public static final int PROTOCOL_T2T = 2; // 0x2 170 field public static final int PROTOCOL_T3T = 3; // 0x3 171 field public static final int PROTOCOL_T5T = 6; // 0x6 172 field public static final int PROTOCOL_UNDETERMINED = 0; // 0x0 173 field public static final int PROTOCOL_UNSUPPORTED = -1; // 0xffffffff 174 } 175 176 public class RoutingTableSystemCodeEntry extends android.nfc.NfcRoutingTableEntry { 177 method @NonNull public byte[] getSystemCode(); 178 } 179 180 public class RoutingTableTechnologyEntry extends android.nfc.NfcRoutingTableEntry { 181 method public int getTechnology(); 182 field public static final int TECHNOLOGY_A = 0; // 0x0 183 field public static final int TECHNOLOGY_B = 1; // 0x1 184 field public static final int TECHNOLOGY_F = 2; // 0x2 185 field public static final int TECHNOLOGY_UNSUPPORTED = -1; // 0xffffffff 186 field public static final int TECHNOLOGY_V = 3; // 0x3 187 } 188 189 public final class T4tNdefNfcee { 190 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) @WorkerThread public int clearData(); 191 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean isOperationOngoing(); 192 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean isSupported(); 193 method @Nullable @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) @WorkerThread public android.nfc.T4tNdefNfceeCcFileInfo readCcfile(); 194 method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) @WorkerThread public byte[] readData(@IntRange(from=0, to=65535) int); 195 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) @WorkerThread public int writeData(@IntRange(from=0, to=65535) int, @NonNull byte[]); 196 field public static final int CLEAR_DATA_FAILED_DEVICE_BUSY = -1; // 0xffffffff 197 field public static final int CLEAR_DATA_FAILED_INTERNAL = 0; // 0x0 198 field public static final int CLEAR_DATA_SUCCESS = 1; // 0x1 199 field public static final int WRITE_DATA_ERROR_CONNECTION_FAILED = -6; // 0xfffffffa 200 field public static final int WRITE_DATA_ERROR_DEVICE_BUSY = -9; // 0xfffffff7 201 field public static final int WRITE_DATA_ERROR_EMPTY_PAYLOAD = -7; // 0xfffffff9 202 field public static final int WRITE_DATA_ERROR_INTERNAL = -1; // 0xffffffff 203 field public static final int WRITE_DATA_ERROR_INVALID_FILE_ID = -4; // 0xfffffffc 204 field public static final int WRITE_DATA_ERROR_INVALID_LENGTH = -5; // 0xfffffffb 205 field public static final int WRITE_DATA_ERROR_NDEF_VALIDATION_FAILED = -8; // 0xfffffff8 206 field public static final int WRITE_DATA_ERROR_NFC_NOT_ON = -3; // 0xfffffffd 207 field public static final int WRITE_DATA_ERROR_RF_ACTIVATED = -2; // 0xfffffffe 208 field public static final int WRITE_DATA_SUCCESS = 0; // 0x0 209 } 210 211 public final class T4tNdefNfceeCcFileInfo implements android.os.Parcelable { 212 method public int describeContents(); 213 method @IntRange(from=15, to=32767) public int getCcFileLength(); 214 method @IntRange(from=0xffffffff, to=65535) public int getFileId(); 215 method @IntRange(from=5, to=32767) public int getMaxSize(); 216 method public int getVersion(); 217 method public boolean isReadAllowed(); 218 method public boolean isWriteAllowed(); 219 method public void writeToParcel(@NonNull android.os.Parcel, int); 220 field @NonNull public static final android.os.Parcelable.Creator<android.nfc.T4tNdefNfceeCcFileInfo> CREATOR; 221 field public static final int VERSION_2_0 = 32; // 0x20 222 field public static final int VERSION_3_0 = 48; // 0x30 223 } 224 225} 226 227package android.nfc.cardemulation { 228 229 public final class CardEmulation { 230 method @Nullable @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public static android.content.ComponentName getPreferredPaymentService(@NonNull android.content.Context); 231 method @NonNull public java.util.List<android.nfc.cardemulation.ApduServiceInfo> getServices(@NonNull String, int); 232 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void overrideRoutingTable(@NonNull android.app.Activity, int, int); 233 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void recoverRoutingTable(@NonNull android.app.Activity); 234 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public int setDefaultNfcSubscriptionId(int); 235 method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public int setServiceEnabledForCategoryOther(@NonNull android.content.ComponentName, boolean); 236 field public static final int SET_SERVICE_ENABLED_STATUS_FAILURE_ALREADY_SET = 3; // 0x3 237 field public static final int SET_SERVICE_ENABLED_STATUS_FAILURE_FEATURE_UNSUPPORTED = 1; // 0x1 238 field public static final int SET_SERVICE_ENABLED_STATUS_FAILURE_INVALID_SERVICE = 2; // 0x2 239 field public static final int SET_SERVICE_ENABLED_STATUS_FAILURE_UNKNOWN_ERROR = 4; // 0x4 240 field public static final int SET_SERVICE_ENABLED_STATUS_OK = 0; // 0x0 241 field public static final int SET_SUBSCRIPTION_ID_STATUS_FAILED_INTERNAL_ERROR = 2; // 0x2 242 field public static final int SET_SUBSCRIPTION_ID_STATUS_FAILED_INVALID_SUBSCRIPTION_ID = 1; // 0x1 243 field public static final int SET_SUBSCRIPTION_ID_STATUS_FAILED_NOT_SUPPORTED = 3; // 0x3 244 field public static final int SET_SUBSCRIPTION_ID_STATUS_SUCCESS = 0; // 0x0 245 field public static final int SET_SUBSCRIPTION_ID_STATUS_UNKNOWN = -1; // 0xffffffff 246 } 247 248} 249 250