An Intent is one of Android’s foundational concepts: a messaging object used to request an action from another app component. Present since Android’s first public release in 2008, the Intent is how the platform glues independent components together. A component (an activity, service, or broadcast receiver) does not call another component’s code directly; instead it constructs an Intent describing what it wants to happen and hands it to the system, which routes it to an appropriate component. This indirection is what lets Android apps cooperate without compile-time knowledge of one another.
Intents come in two forms. An explicit intent names the exact target component, usually by its fully qualified class name. Android delivers an explicit intent directly to that designated class, and nothing else in the Intent matters for routing; explicit intents are typically used to start a component inside the same app. An implicit intent, by contrast, does not name a target. It declares a general action to perform, such as taking a photo, sending an email, or showing a location on a map, and lets the system find any component on the device that can handle it. Implicit intents are the mechanism behind Android’s app chooser dialogs, where the user picks which installed app should service the request.
Routing of implicit intents is governed by intent filters. An intent filter is an expression declared in an app’s manifest file that advertises the kinds of intents a component is willing to receive, described in terms of an action, a category, and a data type or URI. When an implicit intent is dispatched, the system compares it against the intent filters of all installed components and delivers it only to those whose filters match. By declaring a filter, an app makes one of its activities available to be launched by other apps, which is how a freshly installed app can appear as an option for, say, opening a particular file type or sharing content.
Intents can also carry data. An Intent bundles an action, optional data (often a URI), a category, and a set of key-value extras, allowing the requesting component to pass arguments to the component that handles it, and in some cases to receive a result back. This makes the Intent both a routing instruction and a small message payload. Because intents can cross app boundaries, Android’s documentation stresses security considerations: for example, services should be started with explicit intents and should not declare intent filters, so that another app cannot start them implicitly.
The Intent system is one of the most distinctive parts of Android’s architecture and a major reason Android apps feel composable: any app can contribute capabilities (share targets, viewers, editors) that other apps can invoke without prior coordination. In this library the Intent is closely tied to the Android platform itself and to the manifest packaged inside every APK, which is where a component’s intent filters are declared.