Class 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
    • 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
      • Fields 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 
      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 with processCommandApdu(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
    • Constructor Detail

      • AsyncHCEService

        public AsyncHCEService()
        Default Constructor
    • 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 the HostApduService.processCommandApdu(byte[], Bundle) method. When response APDU is computed, SDK will sent it automatically through HostApduService.sendResponseApdu(byte[]) method. Response APDU is not directly returned in this function. MPA could override onApduResponse(byte[], Bundle, byte[]) method to obtain the response APDU.
        Overrides:
        processCommandApdu in class com.gemalto.mfs.mwsdk.payment.internal.apduservice.AbstractHCEServiceInternal
        Parameters:
        apdu - input APDU received from HostApduService
        extras - 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 with processCommandApdu(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 class com.gemalto.mfs.mwsdk.payment.internal.apduservice.AbstractHCEServiceInternal
        Parameters:
        inputApdu - original input APDU for the processing
        extras - original bundle passed for the processing
        responseApdu - response APDU computed by the SDK
        Returns:
        the default return value is false.
        Since:
        6.7.0