Intents bind individual components to each other at runtime (you can think of them as the messengers that request an action from other components), whether the component belongs to your application or another.
An intent is created with an
Intent object, which defines a message to activate either a specific component or a specific type of component—an intent can be either explicit or implicit, respectively.
activities and services, an intent defines the action to perform (for
example, to "view" or "send" something) and may specify the URI of the
data to act on (among other things that the component being started
might need to know). For example, an intent might convey a request for
an activity to show an image or to open a web page. In some cases, you
can start an activity to receive a result, in which case, the activity
also returns the result in an
(for example, you can issue an intent to let the user pick a personal
contact and have it returned to you—the return intent includes a URI
pointing to the chosen contact).
For broadcast receivers, the intent simply defines the announcement being broadcast (for example, a broadcast to indicate the device battery is low includes only a known action string that indicates "battery is low").
The other component type, content provider, is not
activated by intents. Rather, it is activated when targeted by a request
The content resolver handles all direct transactions with the content
provider so that the component that's performing transactions with the
provider doesn't need to and instead calls methods on the
object. This leaves a layer of abstraction between the content provider
and the component requesting information (for security).
There are separate methods for activiting each type of component:
- You can start an activity (or give it something new to do) by passing an
startActivityForResult()(when you want the activity to return a result).
- You can start a service (or give new instructions to an ongoing service) by passing an
startService(). Or you can bind to the service by passing an
- You can initiate a broadcast by passing an
Intentto methods like
- You can perform a query to a content provider by calling
For more information about using intents, see the Intents and Intent Filters document. More information about activating specific components is also provided in the following documents: Activities, Services,
BroadcastReceiver and Content Providers.