Class 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.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String ARG_ACTION_CLASS
      The YubiKeyPromptAction subclass to use when a YubiKey is attached.
      static java.lang.String ARG_ALLOW_NFC
      Whether or not to listen for YubiKeys over NFC (default: true).
      static java.lang.String ARG_ALLOW_USB
      Whether or not to listen for YubiKeys over USB (default: true).
      static java.lang.String ARG_CANCEL_BUTTON_ID
      A view ID of a Button to use for cancelling the action.
      static java.lang.String ARG_CONTENT_VIEW_ID
      A layout resource to use as the content of the dialog.
      static java.lang.String ARG_ENABLE_NFC_BUTTON_ID
      A view ID of a Button to use to enable NFC, if NFC is disabled.
      static java.lang.String ARG_HELP_TEXT_VIEW_ID
      A view ID of a TextView where helpful information is displayed.
      static java.lang.String ARG_TITLE_ID
      A string resource to use as the title of the dialog.
      protected android.widget.Button cancelButton  
      protected android.widget.Button enableNfcButton  
      protected android.widget.TextView helpTextView  
      • 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, 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_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
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static android.content.Intent createIntent​(android.content.Context context, java.lang.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, java.lang.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 getCommandState()
      Get a CommandState for use with some blocking YubiKey actions.
      protected YubiKitManager getYubiKitManager()
      Get the YubiKitManager used by this activity.
      protected boolean isNfcEnabled()  
      protected void onCreate​(android.os.Bundle savedInstanceState)  
      protected void onDestroy()  
      protected void onPause()  
      protected void onResume()  
      protected void onYubiKeyDevice​(com.yubico.yubikit.core.YubiKeyDevice device, java.lang.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, 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, getLayoutInflater, getLoaderManager, getLocalClassName, getMaxNumPictureInPictureActions, getMediaController, getMenuInflater, 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, overridePendingTransition, postponeEnterTransition, recreate, registerActivityLifecycleCallbacks, registerForContextMenu, releaseInstance, removeDialog, reportFullyDrawn, requestDragAndDropPermissions, 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, setRequestedOrientation, setResult, setResult, setSecondaryProgress, setShowWhenLocked, setTaskDescription, setTheme, setTitle, setTitle, setTitleColor, setTranslucent, setTurnScreenOn, setVisible, setVolumeControlStream, setVrModeEnabled, 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, unregisterForContextMenu
      • Methods inherited from class android.view.ContextThemeWrapper

        applyOverrideConfiguration, getAssets, getResources, getTheme, setTheme
      • 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, 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, getSharedPreferences, getSystemServiceName, 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, setWallpaper, setWallpaper, startForegroundService, startInstrumentation, 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 android.view.Window.Callback

        onPointerCaptureChanged
    • Field Detail

      • ARG_ACTION_CLASS

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

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

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

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

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

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

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

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

        protected android.widget.Button cancelButton
      • enableNfcButton

        protected android.widget.Button enableNfcButton
      • helpTextView

        protected android.widget.TextView helpTextView
    • Constructor Detail

      • YubiKeyPromptActivity

        public YubiKeyPromptActivity()
    • Method Detail

      • createIntent

        public static android.content.Intent createIntent​(android.content.Context context,
                                                          java.lang.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,
                                                          java.lang.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,
                                       java.lang.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