Class YubiKeyPromptActivity

java.lang.Object
android.content.Context
android.content.ContextWrapper
android.view.ContextThemeWrapper
android.app.Activity
com.yubico.yubikit.android.ui.YubiKeyPromptActivity
All Implemented Interfaces:
android.content.ComponentCallbacks, android.content.ComponentCallbacks2, android.view.KeyEvent.Callback, android.view.LayoutInflater.Factory, android.view.LayoutInflater.Factory2, android.view.View.OnCreateContextMenuListener, android.view.Window.Callback
Direct Known Subclasses:
OtpActivity

public class YubiKeyPromptActivity extends android.app.Activity
A dialog for interacting with a YubiKey. To use, start this activity with a subclass of YubiKeyPromptAction passed using the ARG_ACTION_CLASS extra in the intent. This can be done by using the createIntent(android.content.Context, java.lang.Class<? extends com.yubico.yubikit.android.ui.YubiKeyPromptAction>, int) method:
 
 Intent intent = YubiKeyPromptActivity.createIntent(context, MyConnectionAction.class);
 startActivityForResult(intent, requestCode);
 
 

The dialog can be customized by passing additional values in the intent.

  • Nested Class Summary

    Nested classes/interfaces inherited from class android.app.Activity

    android.app.Activity.ScreenCaptureCallback

    Nested classes/interfaces inherited from class android.content.Context

    android.content.Context.BindServiceFlags
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    The YubiKeyPromptAction subclass to use when a YubiKey is attached.
    static final String
    Whether or not to listen for YubiKeys over NFC (default: true).
    static final String
    Whether or not to listen for YubiKeys over USB (default: true).
    static final String
    A view ID of a Button to use for cancelling the action.
    static final String
    A layout resource to use as the content of the dialog.
    static final String
    A view ID of a Button to use to enable NFC, if NFC is disabled.
    static final String
    A view ID of a TextView where helpful information is displayed.
    static final String
    A string resource to use as the title of the dialog.
    protected android.widget.Button
     
    protected android.widget.Button
     
    protected android.widget.TextView
     

    Fields inherited from class android.app.Activity

    DEFAULT_KEYS_DIALER, DEFAULT_KEYS_DISABLE, DEFAULT_KEYS_SEARCH_GLOBAL, DEFAULT_KEYS_SEARCH_LOCAL, DEFAULT_KEYS_SHORTCUT, FOCUSED_STATE_SET, FULLSCREEN_MODE_REQUEST_ENTER, FULLSCREEN_MODE_REQUEST_EXIT, OVERRIDE_TRANSITION_CLOSE, OVERRIDE_TRANSITION_OPEN, RESULT_CANCELED, RESULT_FIRST_USER, RESULT_OK

    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_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_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, 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, POWER_SERVICE, PRINT_SERVICE, RECEIVER_EXPORTED, RECEIVER_NOT_EXPORTED, RECEIVER_VISIBLE_TO_INSTANT_APPS, RESTRICTIONS_SERVICE, ROLE_SERVICE, SEARCH_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_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
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static android.content.Intent
    createIntent(android.content.Context context, Class<? extends YubiKeyPromptAction> action)
    Helper method to create an Intent to start the YubiKeyPromptActivity with a ConnectionAction.
    static android.content.Intent
    createIntent(android.content.Context context, Class<? extends YubiKeyPromptAction> action, int titleRes)
    Helper method to create an Intent to start the YubiKeyPromptActivity with a ConnectionAction.
    protected com.yubico.yubikit.core.application.CommandState
    Get a CommandState for use with some blocking YubiKey actions.
    protected YubiKitManager
    Get the YubiKitManager used by this activity.
    protected boolean
     
    protected void
    onCreate(android.os.Bundle savedInstanceState)
     
    protected void
     
    protected void
     
    protected void
     
    protected void
    onYubiKeyDevice(com.yubico.yubikit.core.YubiKeyDevice device, Runnable onDone)
    Called when a YubiKey is attached.
    protected void
    provideResult(int resultCode, android.content.Intent data)
    Provides a result to return to the caller of the Activity.

    Methods inherited from class android.app.Activity

    addContentView, attachBaseContext, clearOverrideActivityTransition, closeContextMenu, closeOptionsMenu, createPendingResult, dismissDialog, dismissKeyboardShortcutsHelper, dispatchGenericMotionEvent, dispatchKeyEvent, dispatchKeyShortcutEvent, dispatchPopulateAccessibilityEvent, dispatchTouchEvent, dispatchTrackballEvent, dump, enterPictureInPictureMode, enterPictureInPictureMode, findViewById, finish, finishActivity, finishActivityFromChild, finishAffinity, finishAfterTransition, finishAndRemoveTask, finishFromChild, getActionBar, getApplication, getCallingActivity, getCallingPackage, getChangingConfigurations, getComponentName, getContentScene, getContentTransitionManager, getCurrentFocus, getFragmentManager, getIntent, getLastNonConfigurationInstance, getLaunchedFromPackage, getLaunchedFromUid, getLayoutInflater, getLoaderManager, getLocalClassName, getMaxNumPictureInPictureActions, getMediaController, getMenuInflater, getOnBackInvokedDispatcher, getParent, getParentActivityIntent, getPreferences, getReferrer, getRequestedOrientation, getSearchEvent, getSplashScreen, getSystemService, getTaskId, getTitle, getTitleColor, getVoiceInteractor, getVolumeControlStream, getWindow, getWindowManager, hasWindowFocus, invalidateOptionsMenu, isActivityTransitionRunning, isChangingConfigurations, isChild, isDestroyed, isFinishing, isImmersive, isInMultiWindowMode, isInPictureInPictureMode, isLaunchedFromBubble, isLocalVoiceInteractionSupported, isTaskRoot, isVoiceInteraction, isVoiceInteractionRoot, managedQuery, moveTaskToBack, navigateUpTo, navigateUpToFromChild, onActionModeFinished, onActionModeStarted, onActivityReenter, onActivityResult, onApplyThemeResource, onAttachedToWindow, onAttachFragment, onBackPressed, onChildTitleChanged, onConfigurationChanged, onContentChanged, onContextItemSelected, onContextMenuClosed, onCreate, onCreateContextMenu, onCreateDescription, onCreateDialog, onCreateDialog, onCreateNavigateUpTaskStack, onCreateOptionsMenu, onCreatePanelMenu, onCreatePanelView, onCreateThumbnail, onCreateView, onCreateView, onDetachedFromWindow, onEnterAnimationComplete, onGenericMotionEvent, onGetDirectActions, onKeyDown, onKeyLongPress, onKeyMultiple, onKeyShortcut, onKeyUp, onLocalVoiceInteractionStarted, onLocalVoiceInteractionStopped, onLowMemory, onMenuItemSelected, onMenuOpened, onMultiWindowModeChanged, onMultiWindowModeChanged, onNavigateUp, onNavigateUpFromChild, onNewIntent, onOptionsItemSelected, onOptionsMenuClosed, onPanelClosed, onPerformDirectAction, onPictureInPictureModeChanged, onPictureInPictureModeChanged, onPictureInPictureRequested, onPictureInPictureUiStateChanged, onPostCreate, onPostCreate, onPostResume, onPrepareDialog, onPrepareDialog, onPrepareNavigateUpTaskStack, onPrepareOptionsMenu, onPreparePanel, onProvideAssistContent, onProvideAssistData, onProvideKeyboardShortcuts, onProvideReferrer, onRequestPermissionsResult, onRestart, onRestoreInstanceState, onRestoreInstanceState, onRetainNonConfigurationInstance, onSaveInstanceState, onSaveInstanceState, onSearchRequested, onSearchRequested, onStart, onStateNotSaved, onStop, onTitleChanged, onTopResumedActivityChanged, onTouchEvent, onTrackballEvent, onTrimMemory, onUserInteraction, onUserLeaveHint, onVisibleBehindCanceled, onWindowAttributesChanged, onWindowFocusChanged, onWindowStartingActionMode, onWindowStartingActionMode, openContextMenu, openOptionsMenu, overrideActivityTransition, overrideActivityTransition, overridePendingTransition, overridePendingTransition, postponeEnterTransition, recreate, registerActivityLifecycleCallbacks, registerComponentCallbacks, registerForContextMenu, registerScreenCaptureCallback, releaseInstance, removeDialog, reportFullyDrawn, requestDragAndDropPermissions, requestFullscreenMode, requestPermissions, requestShowKeyboardShortcuts, requestVisibleBehind, requestWindowFeature, requireViewById, runOnUiThread, setActionBar, setContentTransitionManager, setContentView, setContentView, setContentView, setDefaultKeyMode, setEnterSharedElementCallback, setExitSharedElementCallback, setFeatureDrawable, setFeatureDrawableAlpha, setFeatureDrawableResource, setFeatureDrawableUri, setFinishOnTouchOutside, setImmersive, setInheritShowWhenLocked, setIntent, setLocusContext, setMediaController, setPictureInPictureParams, setProgress, setProgressBarIndeterminate, setProgressBarIndeterminateVisibility, setProgressBarVisibility, setRecentsScreenshotEnabled, setRequestedOrientation, setResult, setResult, setSecondaryProgress, setShouldDockBigOverlays, setShowWhenLocked, setTaskDescription, setTheme, setTitle, setTitle, setTitleColor, setTranslucent, setTurnScreenOn, setVisible, setVolumeControlStream, setVrModeEnabled, shouldDockBigOverlays, shouldShowRequestPermissionRationale, shouldUpRecreateTask, showAssist, showDialog, showDialog, showLockTaskEscapeMessage, startActionMode, startActionMode, startActivities, startActivities, startActivity, startActivity, startActivityForResult, startActivityForResult, startActivityFromChild, startActivityFromChild, startActivityFromFragment, startActivityFromFragment, startActivityIfNeeded, startActivityIfNeeded, startIntentSender, startIntentSender, startIntentSenderForResult, startIntentSenderForResult, startIntentSenderFromChild, startIntentSenderFromChild, startLocalVoiceInteraction, startLockTask, startManagingCursor, startNextMatchingActivity, startNextMatchingActivity, startPostponedEnterTransition, startSearch, stopLocalVoiceInteraction, stopLockTask, stopManagingCursor, takeKeyEvents, triggerSearch, unregisterActivityLifecycleCallbacks, unregisterComponentCallbacks, unregisterForContextMenu, unregisterScreenCaptureCallback

    Methods inherited from class android.view.ContextThemeWrapper

    applyOverrideConfiguration, getAssets, getResources, getTheme, setTheme

    Methods inherited from class android.content.ContextWrapper

    bindIsolatedService, bindService, bindService, bindService, bindService, bindServiceAsUser, bindServiceAsUser, checkCallingOrSelfPermission, checkCallingOrSelfUriPermission, checkCallingOrSelfUriPermissions, checkCallingPermission, checkCallingUriPermission, checkCallingUriPermissions, 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, 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, getSharedPreferences, getSystemServiceName, getWallpaper, getWallpaperDesiredMinimumHeight, getWallpaperDesiredMinimumWidth, grantUriPermission, isDeviceProtectedStorage, isRestricted, isUiContext, moveDatabaseFrom, moveSharedPreferencesFrom, openFileInput, openFileOutput, openOrCreateDatabase, openOrCreateDatabase, peekWallpaper, 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, setWallpaper, setWallpaper, startForegroundService, startInstrumentation, startService, stopService, unbindService, unregisterDeviceIdChangeListener, unregisterReceiver, updateServiceGroup

    Methods inherited from class android.content.Context

    bindIsolatedService, getColor, getColorStateList, getDrawable, getString, getString, getSystemService, getText, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, revokeSelfPermissionOnKill, sendBroadcastWithMultiplePermissions

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface android.view.Window.Callback

    onPointerCaptureChanged
  • Field Details

    • ARG_ACTION_CLASS

      public static final String ARG_ACTION_CLASS
      The YubiKeyPromptAction subclass to use when a YubiKey is attached.
      See Also:
    • ARG_ALLOW_USB

      public static final String ARG_ALLOW_USB
      Whether or not to listen for YubiKeys over USB (default: true).
      See Also:
    • ARG_ALLOW_NFC

      public static final String ARG_ALLOW_NFC
      Whether or not to listen for YubiKeys over NFC (default: true).
      See Also:
    • ARG_TITLE_ID

      public static final String ARG_TITLE_ID
      A string resource to use as the title of the dialog.
      See Also:
    • ARG_CONTENT_VIEW_ID

      public static final String ARG_CONTENT_VIEW_ID
      A layout resource to use as the content of the dialog.
      See Also:
    • ARG_CANCEL_BUTTON_ID

      public static final String ARG_CANCEL_BUTTON_ID
      A view ID of a Button to use for cancelling the action.
      See Also:
    • ARG_ENABLE_NFC_BUTTON_ID

      public static final String ARG_ENABLE_NFC_BUTTON_ID
      A view ID of a Button to use to enable NFC, if NFC is disabled.
      See Also:
    • ARG_HELP_TEXT_VIEW_ID

      public static final String ARG_HELP_TEXT_VIEW_ID
      A view ID of a TextView where helpful information is displayed.
      See Also:
    • cancelButton

      protected android.widget.Button cancelButton
    • enableNfcButton

      protected android.widget.Button enableNfcButton
    • helpTextView

      protected android.widget.TextView helpTextView
  • Constructor Details

    • YubiKeyPromptActivity

      public YubiKeyPromptActivity()
  • Method Details

    • createIntent

      public static android.content.Intent createIntent(android.content.Context context, Class<? extends YubiKeyPromptAction> action, @StringRes int titleRes)
      Helper method to create an Intent to start the YubiKeyPromptActivity with a ConnectionAction.
      Parameters:
      context - the Context to use for Intent creation
      action - the ConnectionAction to use for handing YubiKey connections.
      titleRes - a string resource to use for the title of the dialog.
      Returns:
      an Intent which can be passed to startActivity().
    • createIntent

      public static android.content.Intent createIntent(android.content.Context context, Class<? extends YubiKeyPromptAction> action)
      Helper method to create an Intent to start the YubiKeyPromptActivity with a ConnectionAction.
      Parameters:
      context - the Context to use for Intent creation
      action - the ConnectionAction to use for handing YubiKey connections.
      Returns:
      an Intent which can be passed to startActivity().
    • getYubiKitManager

      protected YubiKitManager getYubiKitManager()
      Get the YubiKitManager used by this activity.
      Returns:
      a YubiKitManager
    • getCommandState

      protected com.yubico.yubikit.core.application.CommandState getCommandState()
      Get a CommandState for use with some blocking YubiKey actions. The dialog will react to KEEPALIVE_UPNEEDED, and the state will be cancelled if the user presses the cancel button.
      Returns:
      a CommandState
    • isNfcEnabled

      protected boolean isNfcEnabled()
    • onYubiKeyDevice

      protected void onYubiKeyDevice(com.yubico.yubikit.core.YubiKeyDevice device, Runnable onDone)
      Called when a YubiKey is attached.

      If provideResult(int, Intent) has been called once this method returns, the Activity will finish.

      Parameters:
      device - a connected YubiKey
    • provideResult

      protected void provideResult(int resultCode, android.content.Intent data)
      Provides a result to return to the caller of the Activity. Internally this calls Activity.setResult(int, Intent) with the given arguments, as well as informing this Activity that it should finish once it is done handling any connected YubiKey.
      Parameters:
      resultCode - The result code to propagate back to the originating activity, often RESULT_CANCELED or RESULT_OK
      data - The data to propagate back to the originating activity.
    • onCreate

      protected void onCreate(@Nullable android.os.Bundle savedInstanceState)
      Overrides:
      onCreate in class android.app.Activity
    • onResume

      protected void onResume()
      Overrides:
      onResume in class android.app.Activity
    • onPause

      protected void onPause()
      Overrides:
      onPause in class android.app.Activity
    • onDestroy

      protected void onDestroy()
      Overrides:
      onDestroy in class android.app.Activity