What is an Intent in Android?

2019-01-03 07:08发布

  • What is an Intent in Android?
  • Can someone elaborate with an example?
  • What are the types of Intents, and why we are using them?
  • Why are Intents so important in Android?

16条回答
▲ chillily
2楼-- · 2019-01-03 08:06

Intents are a way of telling Android what you want to do. In other words, you describe your intention. Intents can be used to signal to the Android system that a certain event has occurred. Other components in Android can register to this event via an intent filter.

Following are 2 types of intents

1.Explicit Intents

used to call a specific component. When you know which component you want to launch and you do not want to give the user free control over which component to use. For example, you have an application that has 2 activities. Activity A and activity B. You want to launch activity B from activity A. In this case you define an explicit intent targeting activityB and then use it to directly call it.

2.Implicit Intents

used when you have an idea of what you want to do, but you do not know which component should be launched. Or if you want to give the user an option to choose between a list of components to use. If these Intents are send to the Android system it searches for all components which are registered for the specific action and the data type. If only one component is found, Android starts the component directly. For example, you have an application that uses the camera to take photos. One of the features of your application is that you give the user the possibility to send the photos he has taken. You do not know what kind of application the user has that can send photos, and you also want to give the user an option to choose which external application to use if he has more than one. In this case you would not use an explicit intent. Instead you should use an implicit intent that has its action set to ACTION_SEND and its data extra set to the URI of the photo.

An explicit intent is always delivered to its target, no matter what it contains; the filter is not consulted. But an implicit intent is delivered to a component only if it can pass through one of the component's filters

Intent Filters

If an Intents is send to the Android system, it will determine suitable applications for this Intents. If several components have been registered for this type of Intents, Android offers the user the choice to open one of them.

This determination is based on IntentFilters. An IntentFilters specifies the types of Intent that an activity, service, orBroadcast Receiver can respond to. An Intent Filter declares the capabilities of a component. It specifies what anactivity or service can do and what types of broadcasts a Receiver can handle. It allows the corresponding component to receive Intents of the declared type. IntentFilters are typically defined via the AndroidManifest.xml file. For BroadcastReceiver it is also possible to define them in coding. An IntentFilters is defined by its category, action and data filters. It can also contain additional metadata.

If a component does not define an Intent filter, it can only be called by explicit Intents.

Following are 2 ways to define a filter

1.Manifest file

If you define the intent filter in the manifest, your application does not have to be running to react to the intents defined in it’s filter. Android registers the filter when your application gets installed.

2.BroadCast Receiver

If you want your broadcast receiver to receive the intent only when your application is running. Then you should define your intent filter during run time (programatically). Keep in mind that this works for broadcast receivers only.

查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-01-03 08:12

An Android application can contain zero or more activities. When your application has more than one activity, you often need to navigate from one to another. In Android, you navigate between activities through what is known as an intent. You can pass some data to the activity which you want to start through intent, by using putExtra().

查看更多
可以哭但决不认输i
4楼-- · 2019-01-03 08:13

An Intent is an "intention" to perform an action; in other words,

a messaging object you can use to request an action from another app component

An Intent is basically a message to say you did or want something to happen. Depending on the intent, apps or the OS might be listening for it and will react accordingly. Think of it as a blast email to a bunch of friends, in which you tell your friend John to do something, or to friends who can do X ("intent filters"), to do X. The other folks will ignore the email, but John (or friends who can do X) will react to it.

To listen for an broadcast intent (like the phone ringing, or an SMS is received), you implement a broadcast receiver, which will be passed the intent. To declare that you can handle another's app intent like "take picture", you declare an intent filter in your app's manifest file.

If you want to fire off an intent to do something, like pop up the dialer, you fire off an intent saying you will.

查看更多
我命由我不由天
5楼-- · 2019-01-03 08:14

Android Intent

Android Intent lets you navigate from one android activity to another. With examples, this tutorial also talks about various types of Android intents.

Android Intent can be defined as a simple message objects which is used to communicate from 1 activity to another.

Intents define intention of an Application . They are also used to transfer data between activities.

An Android Intent can be used to perform following 3 tasks :

  1. Open another Activity or Service from the current Activity
  2. Pass data between Activities and Services
  3. Delegate responsibility to another application. For example, you can use Intents to open the browser application to display a URL.

Intent can be broadly classified into 2 categories. There are no keywords for this category and just a broad classification of how android intents are used.

Explicit Android Intent

Explicit Android Intent is the Intent in which you explicitly define the component that needs to be called by Android System.

 Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);

Implicit Android Intent

Implicit Android Intents is the intent where instead of defining the exact components, you define the action you want to perform. The decision to handle this action is left to the operating system. The OS decides which component is best to run for implicit intents. Let us see an example:

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);

For more information you may visit below

http://developer.android.com/reference/android/content/Intent.html

查看更多
登录 后发表回答