# Enum IntentSource

java.lang.Object
java.lang.Enum<IntentSource>
com.codename1.intents.IntentSource

All Implemented Interfaces:
  `Comparable<IntentSource>`

public enum IntentSource extends Enum<IntentSource>

Where an intent invocation came from.

Handlers should rarely branch on this -- an intent that behaves differently depending on who asked is a bug waiting to happen -- but it is useful for analytics, for tailoring the spoken line, and for deciding how much detail a snippet should carry.

- ## Enum Constant Summary

  Enum Constants
  Enum Constant
  Description
  `IN_APP`
  An in-app call to `Intents.invoke(String, Map)`, including the simulator's Intents window.
  `MODEL`
  A language model calling the intent as a tool, through the projection `Intents.asTools()` exposes.
  `SHORTCUT`
  A shortcut the user placed or the system suggested: the Shortcuts app, an iOS App Shortcut, or an Android launcher shortcut.
  `SPOTLIGHT`
  The user tapped an item this app published through `Intents.index(List)`.
  `UNKNOWN`
  The platform did not say, or the source is one this version does not model.
  `VOICE`
  A voice assistant, where the platform says so.
  `WIDGET`
  A button on a home-screen widget or live activity bound to this intent.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static IntentSource`
  `valueOf(String name)`
  Returns the enum constant of this type with the specified name.
  `static IntentSource[]`
  `values()`
  Returns an array containing the constants of this enum type, in the order they are declared.

  ### Methods inherited from class Enum

  `clone, compareTo, equals, getDeclaringClass, getEnumValues, hashCode, name, ordinal, setEnumValues, toString, valueOf`

  ### Methods inherited from class Object

  `getClass, notify, notifyAll, wait, wait, wait`

- ## Enum Constant Details

  - ### VOICE

    public static final IntentSource VOICE

    A voice assistant, where the platform says so.

    iOS does not: an App Intent's `perform()` is not told whether Siri, the Shortcuts app or a home-screen App Shortcut ran it, so all three arrive as `UNKNOWN` rather than one of them claiming to be Siri. Do not write a branch that expects this on a device; the simulator can still produce it, which is how the path is exercised.

  - ### SPOTLIGHT

    public static final IntentSource SPOTLIGHT
    The user tapped an item this app published through `Intents.index(List)`.

  - ### SHORTCUT

    public static final IntentSource SHORTCUT
    A shortcut the user placed or the system suggested: the Shortcuts app, an iOS App Shortcut, or an Android launcher shortcut.

  - ### WIDGET

    public static final IntentSource WIDGET
    A button on a home-screen widget or live activity bound to this intent.

  - ### IN_APP

    public static final IntentSource IN_APP
    An in-app call to `Intents.invoke(String, Map)`, including the simulator's Intents window.

  - ### MODEL

    public static final IntentSource MODEL
    A language model calling the intent as a tool, through the projection `Intents.asTools()` exposes.

  - ### UNKNOWN

    public static final IntentSource UNKNOWN

    The platform did not say, or the source is one this version does not model.

    This is the ordinary case for an iOS App Intent, which is invoked by Siri, the Shortcuts app or an App Shortcut without disclosing which -- so it is not a rare fallback and carries no implication that the app is on screen. Take it as exactly what it says: the source is unknown. Anything that needs to be certain should be true for every source.

- ## Method Details

  - ### values

    public static IntentSource[] values()
    Returns an array containing the constants of this enum type, in the order they are declared.
    Returns:
      an array containing the constants of this enum type, in the order they are declared

  - ### valueOf

    public static IntentSource valueOf(String name)
    Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
    Parameters:
      `name` - the name of the enum constant to be returned.
    Returns:
      the enum constant with the specified name
    Throws:
      `IllegalArgumentException` - if this enum type has no constant with the specified name
      `NullPointerException` - if the argument is null