Package com.gemalto.mfs.mwsdk.payment
Class AsyncHCEService
- java.lang.Object
-
- android.content.Context
-
- android.content.ContextWrapper
-
- android.app.Service
-
- android.nfc.cardemulation.HostApduService
-
- com.gemalto.mfs.mwsdk.payment.internal.apduservice.AbstractHCEServiceInternal
-
- com.gemalto.mfs.mwsdk.payment.AsyncHCEService
-
- All Implemented Interfaces:
android.content.ComponentCallbacks
,android.content.ComponentCallbacks2
,APDUProcessorSetupCallbacks
public abstract class AsyncHCEService extends com.gemalto.mfs.mwsdk.payment.internal.apduservice.AbstractHCEServiceInternal
Abstract class for the HCE service. This class must require to setup Listener in order to get notification for the payment. This is similar toAbstractHCEService
. However, the APDU processing with be executed in background thread instead of the UI thread. When application is integrated withAsyncHCEService
, the SDK suspends APDU processing when SDK requests for authentication throughPaymentServiceListener.onAuthenticationRequired(PaymentService, CHVerificationMethod, long)
(PaymentService, CHVerificationMethod, long)}. Some POS immediately issues the 2nd tap command APDUs while authentication is not yet provided and the mobile device is still in close proximity to the POS. A repeating 'beep' sound may be made by the POS before authentication is provided. In order to avoid the behavior, SDK suspends the APDU processing while it is requesting for authentication.- Since:
- 6.7.0
-
-
Field Summary
-
Fields inherited from class android.nfc.cardemulation.HostApduService
DEACTIVATION_DESELECTED, DEACTIVATION_LINK_LOSS, SERVICE_INTERFACE, SERVICE_META_DATA
-
Fields inherited from class android.app.Service
START_CONTINUATION_MASK, START_FLAG_REDELIVERY, START_FLAG_RETRY, START_NOT_STICKY, START_REDELIVER_INTENT, START_STICKY, START_STICKY_COMPATIBILITY, STOP_FOREGROUND_DETACH, STOP_FOREGROUND_REMOVE
-
Fields inherited from class android.content.Context
ACCESSIBILITY_SERVICE, ACCOUNT_SERVICE, ACTIVITY_SERVICE, ALARM_SERVICE, APP_OPS_SERVICE, APP_SEARCH_SERVICE, APPWIDGET_SERVICE, AUDIO_SERVICE, BATTERY_SERVICE, BIND_ABOVE_CLIENT, BIND_ADJUST_WITH_ACTIVITY, BIND_ALLOW_OOM_MANAGEMENT, BIND_AUTO_CREATE, BIND_DEBUG_UNBIND, BIND_EXTERNAL_SERVICE, BIND_IMPORTANT, BIND_INCLUDE_CAPABILITIES, BIND_NOT_FOREGROUND, BIND_NOT_PERCEPTIBLE, BIND_WAIVE_PRIORITY, BIOMETRIC_SERVICE, BLOB_STORE_SERVICE, BLUETOOTH_SERVICE, BUGREPORT_SERVICE, CAMERA_SERVICE, CAPTIONING_SERVICE, CARRIER_CONFIG_SERVICE, CLIPBOARD_SERVICE, COMPANION_DEVICE_SERVICE, CONNECTIVITY_DIAGNOSTICS_SERVICE, CONNECTIVITY_SERVICE, CONSUMER_IR_SERVICE, CONTEXT_IGNORE_SECURITY, CONTEXT_INCLUDE_CODE, CONTEXT_RESTRICTED, CROSS_PROFILE_APPS_SERVICE, DEVICE_POLICY_SERVICE, DISPLAY_HASH_SERVICE, DISPLAY_SERVICE, DOMAIN_VERIFICATION_SERVICE, DOWNLOAD_SERVICE, DROPBOX_SERVICE, EUICC_SERVICE, FILE_INTEGRITY_SERVICE, FINGERPRINT_SERVICE, GAME_SERVICE, HARDWARE_PROPERTIES_SERVICE, INPUT_METHOD_SERVICE, INPUT_SERVICE, IPSEC_SERVICE, JOB_SCHEDULER_SERVICE, KEYGUARD_SERVICE, LAUNCHER_APPS_SERVICE, LAYOUT_INFLATER_SERVICE, LOCATION_SERVICE, MEDIA_COMMUNICATION_SERVICE, MEDIA_METRICS_SERVICE, MEDIA_PROJECTION_SERVICE, MEDIA_ROUTER_SERVICE, MEDIA_SESSION_SERVICE, MIDI_SERVICE, MODE_APPEND, MODE_ENABLE_WRITE_AHEAD_LOGGING, MODE_MULTI_PROCESS, MODE_NO_LOCALIZED_COLLATORS, MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, NETWORK_STATS_SERVICE, NFC_SERVICE, NOTIFICATION_SERVICE, NSD_SERVICE, PEOPLE_SERVICE, PERFORMANCE_HINT_SERVICE, POWER_SERVICE, PRINT_SERVICE, RECEIVER_VISIBLE_TO_INSTANT_APPS, RESTRICTIONS_SERVICE, ROLE_SERVICE, SEARCH_SERVICE, SENSOR_SERVICE, SHORTCUT_SERVICE, STORAGE_SERVICE, STORAGE_STATS_SERVICE, SYSTEM_HEALTH_SERVICE, TELECOM_SERVICE, TELEPHONY_IMS_SERVICE, TELEPHONY_SERVICE, TELEPHONY_SUBSCRIPTION_SERVICE, TEXT_CLASSIFICATION_SERVICE, TEXT_SERVICES_MANAGER_SERVICE, TV_INPUT_SERVICE, UI_MODE_SERVICE, USAGE_STATS_SERVICE, USB_SERVICE, USER_SERVICE, VIBRATOR_MANAGER_SERVICE, VIBRATOR_SERVICE, VPN_MANAGEMENT_SERVICE, WALLPAPER_SERVICE, WIFI_AWARE_SERVICE, WIFI_P2P_SERVICE, WIFI_RTT_RANGING_SERVICE, WIFI_SERVICE, WINDOW_SERVICE
-
-
Constructor Summary
Constructors Constructor Description AsyncHCEService()
Default Constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
onApduResponse(byte[] inputApdu, android.os.Bundle extras, byte[] responseApdu)
This method works together withprocessCommandApdu(byte[], Bundle)
and call when response APDU has been computed by the SDK.byte[]
processCommandApdu(byte[] apdu, android.os.Bundle extras)
This function will process APDU in an separate thread.-
Methods inherited from class com.gemalto.mfs.mwsdk.payment.internal.apduservice.AbstractHCEServiceInternal
onDeactivated, processCommandApduAsyncInternal
-
Methods inherited from class android.nfc.cardemulation.HostApduService
notifyUnhandled, onBind, sendResponseApdu
-
Methods inherited from class android.app.Service
attachBaseContext, dump, getApplication, getForegroundServiceType, onConfigurationChanged, onCreate, onDestroy, onLowMemory, onRebind, onStart, onStartCommand, onTaskRemoved, onTrimMemory, onUnbind, startForeground, startForeground, stopForeground, stopForeground, stopSelf, stopSelf, stopSelfResult
-
Methods inherited from class android.content.ContextWrapper
bindIsolatedService, bindService, bindService, bindServiceAsUser, checkCallingOrSelfPermission, checkCallingOrSelfUriPermission, checkCallingOrSelfUriPermissions, checkCallingPermission, checkCallingUriPermission, checkCallingUriPermissions, checkPermission, checkSelfPermission, checkUriPermission, checkUriPermission, checkUriPermissions, clearWallpaper, createAttributionContext, createConfigurationContext, createContext, createContextForSplit, createDeviceProtectedStorageContext, createDisplayContext, createPackageContext, createWindowContext, createWindowContext, databaseList, deleteDatabase, deleteFile, deleteSharedPreferences, enforceCallingOrSelfPermission, enforceCallingOrSelfUriPermission, enforceCallingPermission, enforceCallingUriPermission, enforcePermission, enforceUriPermission, enforceUriPermission, fileList, getApplicationContext, getApplicationInfo, getAssets, getAttributionSource, getAttributionTag, getBaseContext, getCacheDir, getClassLoader, getCodeCacheDir, getContentResolver, getDatabasePath, getDataDir, getDir, getDisplay, getExternalCacheDir, getExternalCacheDirs, getExternalFilesDir, getExternalFilesDirs, getExternalMediaDirs, getFilesDir, getFileStreamPath, getMainExecutor, getMainLooper, getNoBackupFilesDir, getObbDir, getObbDirs, getOpPackageName, getPackageCodePath, getPackageManager, getPackageName, getPackageResourcePath, getParams, getResources, getSharedPreferences, getSystemService, getSystemServiceName, getTheme, getWallpaper, getWallpaperDesiredMinimumHeight, getWallpaperDesiredMinimumWidth, grantUriPermission, isDeviceProtectedStorage, isRestricted, isUiContext, moveDatabaseFrom, moveSharedPreferencesFrom, openFileInput, openFileOutput, openOrCreateDatabase, openOrCreateDatabase, peekWallpaper, registerReceiver, registerReceiver, registerReceiver, registerReceiver, removeStickyBroadcast, removeStickyBroadcastAsUser, revokeUriPermission, revokeUriPermission, sendBroadcast, sendBroadcast, sendBroadcastAsUser, sendBroadcastAsUser, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcastAsUser, sendStickyBroadcast, sendStickyBroadcast, sendStickyBroadcastAsUser, sendStickyOrderedBroadcast, sendStickyOrderedBroadcastAsUser, setTheme, setWallpaper, setWallpaper, startActivities, startActivities, startActivity, startActivity, startForegroundService, startInstrumentation, startIntentSender, startIntentSender, startService, stopService, unbindService, unregisterReceiver, updateServiceGroup
-
Methods inherited from class android.content.Context
getColor, getColorStateList, getDrawable, getString, getString, getSystemService, getText, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, registerComponentCallbacks, sendBroadcastWithMultiplePermissions, unregisterComponentCallbacks
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.gemalto.mfs.mwsdk.payment.APDUProcessorSetupCallbacks
setupCardActivation, setupListener, setupPluginRegistration
-
-
-
-
Method Detail
-
processCommandApdu
public byte[] processCommandApdu(byte[] apdu, android.os.Bundle extras)
This function will process APDU in an separate thread. It returns immediately the 'NULL' byte array. Integrator shall return NULL to theHostApduService.processCommandApdu(byte[], Bundle)
method. When response APDU is computed, SDK will sent it automatically throughHostApduService.sendResponseApdu(byte[])
method. Response APDU is not directly returned in this function. MPA could overrideonApduResponse(byte[], Bundle, byte[])
method to obtain the response APDU.- Overrides:
processCommandApdu
in classcom.gemalto.mfs.mwsdk.payment.internal.apduservice.AbstractHCEServiceInternal
- Parameters:
apdu
- input APDU received from HostApduServiceextras
- extra data that can be send together with the input APDU- Returns:
- byte[] always null
- Since:
- 6.7.0
-
onApduResponse
public boolean onApduResponse(byte[] inputApdu, android.os.Bundle extras, byte[] responseApdu)
This method works together withprocessCommandApdu(byte[], Bundle)
and call when response APDU has been computed by the SDK.MPA could override this function to obtain the response APDU. The return 'boolean' informs the SDK if MPA intend to send back the response APDU to the Terminal.
- When MPA returns 'false' in the overridden function, SDK sends response APDU to
HostApduService
after this function. - MPA could also send response APDU through
HostApduService.sendResponseApdu(byte[])
method. If this case, MPA must return 'true' so that SDK will not send response APDU again. This provides the possibility for the MPA to override the response APDU.
- Overrides:
onApduResponse
in classcom.gemalto.mfs.mwsdk.payment.internal.apduservice.AbstractHCEServiceInternal
- Parameters:
inputApdu
- original input APDU for the processingextras
- original bundle passed for the processingresponseApdu
- response APDU computed by the SDK- Returns:
- the default return value is false.
- Since:
- 6.7.0
- When MPA returns 'false' in the overridden function, SDK sends response APDU to
-
-