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 to
AbstractHCEService. However,
the APDU processing with be executed in background thread instead of the UI thread.
When application is integrated with AsyncHCEService, the SDK suspends APDU processing when SDK requests for authentication through
PaymentServiceListener.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
-
Nested Class Summary
Nested classes/interfaces inherited from class android.content.Context
android.content.Context.BindServiceFlags -
Field Summary
Fields inherited from class android.nfc.cardemulation.HostApduService
DEACTIVATION_DESELECTED, DEACTIVATION_LINK_LOSS, SERVICE_INTERFACE, SERVICE_META_DATAFields 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_LEGACY, STOP_FOREGROUND_REMOVEFields 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_ACTIVITY_STARTS, BIND_ALLOW_OOM_MANAGEMENT, BIND_AUTO_CREATE, BIND_DEBUG_UNBIND, BIND_EXTERNAL_SERVICE, BIND_EXTERNAL_SERVICE_LONG, BIND_IMPORTANT, BIND_INCLUDE_CAPABILITIES, BIND_NOT_FOREGROUND, BIND_NOT_PERCEPTIBLE, BIND_PACKAGE_ISOLATED_PROCESS, BIND_SHARED_ISOLATED_PROCESS, 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, CONTACT_KEYS_SERVICE, CONTEXT_IGNORE_SECURITY, CONTEXT_INCLUDE_CODE, CONTEXT_RESTRICTED, CREDENTIAL_SERVICE, CROSS_PROFILE_APPS_SERVICE, DEVICE_ID_DEFAULT, DEVICE_ID_INVALID, DEVICE_LOCK_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, GRAMMATICAL_INFLECTION_SERVICE, HARDWARE_PROPERTIES_SERVICE, HEALTHCONNECT_SERVICE, INPUT_METHOD_SERVICE, INPUT_SERVICE, IPSEC_SERVICE, JOB_SCHEDULER_SERVICE, KEYGUARD_SERVICE, LAUNCHER_APPS_SERVICE, LAYOUT_INFLATER_SERVICE, LOCALE_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, OVERLAY_SERVICE, PEOPLE_SERVICE, PERFORMANCE_HINT_SERVICE, PERSISTENT_DATA_BLOCK_SERVICE, POWER_SERVICE, PRINT_SERVICE, PROFILING_SERVICE, RECEIVER_EXPORTED, RECEIVER_NOT_EXPORTED, RECEIVER_VISIBLE_TO_INSTANT_APPS, RESTRICTIONS_SERVICE, ROLE_SERVICE, SEARCH_SERVICE, SECURITY_STATE_SERVICE, SENSOR_SERVICE, SHORTCUT_SERVICE, STATUS_BAR_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, TV_INTERACTIVE_APP_SERVICE, UI_MODE_SERVICE, USAGE_STATS_SERVICE, USB_SERVICE, USER_SERVICE, VIBRATOR_MANAGER_SERVICE, VIBRATOR_SERVICE, VIRTUAL_DEVICE_SERVICE, VPN_MANAGEMENT_SERVICE, WALLPAPER_SERVICE, WIFI_AWARE_SERVICE, WIFI_P2P_SERVICE, WIFI_RTT_RANGING_SERVICE, WIFI_SERVICE, WINDOW_SERVICEFields inherited from interface android.content.ComponentCallbacks2
TRIM_MEMORY_BACKGROUND, TRIM_MEMORY_COMPLETE, TRIM_MEMORY_MODERATE, TRIM_MEMORY_RUNNING_CRITICAL, TRIM_MEMORY_RUNNING_LOW, TRIM_MEMORY_RUNNING_MODERATE, TRIM_MEMORY_UI_HIDDEN -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanonApduResponse(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, processCommandApduAsyncInternalMethods inherited from class android.nfc.cardemulation.HostApduService
notifyUnhandled, onBind, processPollingFrames, sendResponseApduMethods inherited from class android.app.Service
attachBaseContext, dump, getApplication, getForegroundServiceType, onConfigurationChanged, onCreate, onDestroy, onLowMemory, onRebind, onStart, onStartCommand, onTaskRemoved, onTimeout, onTimeout, onTrimMemory, onUnbind, startForeground, startForeground, stopForeground, stopForeground, stopSelf, stopSelf, stopSelfResultMethods inherited from class android.content.ContextWrapper
bindIsolatedService, bindService, bindService, bindService, bindService, bindServiceAsUser, bindServiceAsUser, checkCallingOrSelfPermission, checkCallingOrSelfUriPermission, checkCallingOrSelfUriPermissions, checkCallingPermission, checkCallingUriPermission, checkCallingUriPermissions, checkContentUriPermissionFull, checkPermission, checkSelfPermission, checkUriPermission, checkUriPermission, checkUriPermissions, clearWallpaper, createAttributionContext, createConfigurationContext, createContext, createContextForSplit, createDeviceContext, 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, getDeviceId, 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, registerComponentCallbacks, registerDeviceIdChangeListener, registerReceiver, registerReceiver, registerReceiver, registerReceiver, removeStickyBroadcast, removeStickyBroadcastAsUser, revokeSelfPermissionsOnKill, revokeUriPermission, revokeUriPermission, sendBroadcast, sendBroadcast, sendBroadcast, sendBroadcastAsUser, sendBroadcastAsUser, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcastAsUser, sendStickyBroadcast, sendStickyBroadcast, sendStickyBroadcastAsUser, sendStickyOrderedBroadcast, sendStickyOrderedBroadcastAsUser, setTheme, setWallpaper, setWallpaper, startActivities, startActivities, startActivity, startActivity, startForegroundService, startInstrumentation, startIntentSender, startIntentSender, startService, stopService, unbindService, unregisterComponentCallbacks, unregisterDeviceIdChangeListener, unregisterReceiver, updateServiceGroupMethods inherited from class android.content.Context
bindIsolatedService, getColor, getColorStateList, getDrawable, getString, getString, getSystemService, getText, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, revokeSelfPermissionOnKill, sendBroadcastWithMultiplePermissionsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.gemalto.mfs.mwsdk.payment.APDUProcessorSetupCallbacks
setupCardActivation, setupListener, setupPluginRegistration
-
Constructor Details
-
AsyncHCEService
public AsyncHCEService()Default Constructor
-
-
Method Details
-
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:
processCommandApduin 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
HostApduServiceafter 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:
onApduResponsein 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
-