Android intents allow communication between application components and are represented as Intent objects. There are two main types of intents - explicit intents explicitly define which component should handle the intent, while implicit intents specify an action and optional data to match with registered intent filters. Intent filters define the intents a component can respond to and contain action, data, category and other elements. Actions define what the component will do, common actions include viewing data, making phone calls. Data provides content for the action using URIs or MIME types. Categories provide metadata on the intent's behavior. Flags provide instructions on how the intent should be handled. Together, intents and filters allow sharing of tasks between components and applications on Android.