答案 0 :(得分:470)
Intent是执行某项行动的“意图”;换句话说,
您可以用来向其他app component
请求操作的消息传递对象
Intent基本上是一条消息,表示你做了或想要发生什么。根据意图,应用程序或操作系统可能正在监听它并将作出相应的反应。把它想象成一群朋友的爆炸性电子邮件,其中你告诉你的朋友约翰做某事,或者告诉你可以做X("intent filters")的朋友做X.其他人会忽略这封电子邮件但约翰(或能做X的朋友)会对此做出反应。
要收听广播意图(如电话铃声或收到短信),您实施broadcast receiver,将传递意图。要声明您可以处理另一个应用程序意图,例如“拍照”,您声明intent filter in your app's manifest file。
如果你想发动做某事的意图,比如弹出拨号器,你就fire off an intent说你会。
答案 1 :(得分:153)
Intent 基本上是在 components 之间传递的消息(例如活动,服务,广播接收器和内容提供商)。因此,它几乎等同于传递给API调用的参数。 API调用和通过意图调用组件之间的根本区别是:
当然,通过使用所谓的显式意图,可以使Intent完全像API调用一样工作,这将在后面解释。但通常情况下,implicit intents是要走的路,这就是这里所解释的。
想要调用另一个组件的组件必须仅表达其意图才能完成工作。 Android平台调用任何其他存在并声称可以通过intent-filters完成此类工作的组件来完成工作。这意味着,两个组件都不知道彼此的存在,但仍然可以一起工作,为最终用户提供所需的结果。
组件之间的这种不可见的连接是通过意图,意图过滤器和Android平台的组合来实现的。
这带来了巨大的可能性,如:
以下是有关Intents from the Android documentation的其他技术详情。
intent是要执行的操作的抽象描述。它可以与 startActivity 一起使用,以启动活动,broadcastIntent 将其发送到任何感兴趣的 BroadcastReceiver 组件,以及 startService(Intent) 或 bindService(Intent,ServiceConnection,int)与后台服务进行通信。
Intent提供了一种工具,用于在不同应用程序中的代码之间执行延迟运行时绑定。它最重要的用途是发起活动,它可以被认为是活动之间的粘合剂。它基本上是一个被动数据结构,包含要执行的动作的抽象描述。意图中的主要信息是:
- 的作用强> 要执行的一般操作,例如ACTION_VIEW, ACTION_EDIT,ACTION_MAIN等
- 数据强> 要操作的数据,例如联系人中的人员记录 数据库,表示为Uri。
答案 2 :(得分:45)
意图是告诉Android你想做什么的一种方式。 换句话说,你描述了你的意图。意图可用于向Android系统发出已发生特定事件的信号。 Android中的其他组件可以通过intent过滤器注册到此事件。
以下是 2种类型的意图
用于调用特定组件。当您知道要启动哪个组件时,并且您不希望让用户可以自由控制要使用的组件。例如,您有一个包含2个活动的应用程序。活动A和活动B.您想要从活动A启动活动B.在这种情况下,您定义一个显式的意图目标activityB,然后使用它直接调用它。
当您知道自己想要做什么时使用,但是您不知道应该启动哪个组件。或者,如果您希望为用户提供在要使用的组件列表之间进行选择的选项。如果将这些Intent发送到Android系统,它将搜索为特定操作和数据类型注册的所有组件。如果只找到一个组件,Android将直接启动该组件。例如,您有一个使用相机拍照的应用程序。您的应用程序的一个功能是,您可以让用户发送他拍摄的照片。您不知道用户可以发送照片的应用程序类型,并且您还希望为用户提供选项,以便在有多个外部应用程序时选择使用该应用程序。在这种情况下,您不会使用明确的意图。相反,你应该使用一个隐含的意图,其动作设置为ACTION_SEND,其数据额外设置为照片的URI。
无论它包含什么,明确的意图总是传递给它的目标;不咨询过滤器。但只有当组件可以通过组件的一个过滤器
时,才会将隐式意图传递给组件如果将Intents发送到Android系统,它将确定此Intent的合适应用程序。如果已为此类Intent注册了多个组件,则Android会为用户提供打开其中一个组件的选择。
此确定基于IntentFilters。 IntentFilters指定活动,服务或广播接收器可以响应的Intent类型。 Intent Filter声明组件的功能。它指定了响应或服务可以执行的操作以及Receiver可以处理的广播类型。它允许相应的组件接收声明类型的Intents。 IntentFilters通常通过AndroidManifest.xml文件定义。对于BroadcastReceiver,也可以在编码中定义它们。 IntentFilters由其类别,操作和数据过滤器定义。它还可以包含其他元数据。
如果组件未定义Intent过滤器,则只能通过显式Intents调用它。
以下是 2种定义过滤器的方法
如果在清单中定义了intent过滤器,则不必运行应用程序来对其过滤器中定义的意图作出反应。 Android会在您的应用程序安装后注册过滤器。
如果您希望广播接收器仅在应用程序运行时接收意图。然后,您应该在运行时定义您的intent过滤器(以编程方式)。请记住,这仅适用于广播接收器。
答案 3 :(得分:12)
在编写单个活动之后,需要转换到另一个活动以执行另一个任务,无论是否有第一个活动的信息。
Android平台允许通过Intent Interface进行转换。
从这里取词:Using Intent Demo我建议您通过这个例子,因为他们也提供了一个代码文件。所以你可以使用它并轻松理解它。
答案 4 :(得分:9)
根据他们的文件:
Intent是一个在不同组件之间提供运行时绑定的对象(例如两个活动)。意图表示应用程序“有意做某事”。您可以将意图用于各种任务,但通常它们用于启动另一项活动。
以下是与示例的链接: http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent
正如文档描述的那样,为了开始一项活动(你还需要了解什么是活动),请使用下面的意图
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
答案 5 :(得分:9)
Android Intent可让您从一个Android活动导航到另一个。通过示例,本教程还讨论了各种类型的Android意图。
Android Intent可以定义为一个简单的消息对象,用于从1个活动到另一个活动进行通信。
意图定义应用程序的意图。它们还用于在活动之间传输数据。
Android Intent可用于执行以下3项任务:
意图大致可分为两类。此类别没有关键字,只是对Android意图如何使用的广泛分类。
明确的Android意图
显式Android Intent是您明确定义Android系统需要调用的组件的Intent。
Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);
隐含的Android意图
隐式Android意图是一种意图,您可以定义要执行的操作,而不是定义确切的组件。处理此操作的决定权留给操作系统。操作系统决定哪个组件最适合运行隐式意图。 让我们看一个例子:
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
有关详细信息,请访问以下
http://developer.android.com/reference/android/content/Intent.html
答案 6 :(得分:8)
intent是要执行的操作的抽象描述。它可以与startActivity一起用于启动Activity,broadcastIntent用于将其发送到任何感兴趣的BroadcastReceiver组件,startService(Intent)或bindService(Intent,ServiceConnection,int)用于与后台服务进行通信。
有关详细信息,请参阅以下链接:
1)。 http://developer.android.com/reference/android/content/Intent.html
2)http://developer.android.com/guide/topics/intents/intents-filters.html
3)。 http://www.vogella.de/articles/AndroidIntent/article.html
还有更多文章可供选择。
答案 7 :(得分:5)
什么是意图?
这是传递给组件的一种消息或信息。它用于启动活动,显示网页,发送短信,发送电子邮件等。
android中有两种类型的意图:
隐含意图
明确的意图
隐式意图用于调用系统组件
实施例
Intent i = newIntent(android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.amazon.com”));
startActivity(i);
显式意图用于调用活动类。
实施例
Intent intent = newIntent(this,SecondActivity.class);
startActivity(intent);
你可以阅读更多
http://www.vogella.com/tutorials/AndroidIntent/article.html#intents_overview http://developer.android.com/reference/android/content/Intent.html
答案 8 :(得分:2)
为了理解意图,我建议你浏览网站: http://developer.android.com/guide/topics/intents/intents-filters.html
另外,我在个人博客中讨论过有关示例的意图: http://androiddesk.wordpress.com/2011/12/24/explicit-intent/
http://androiddesk.wordpress.com/2012/01/13/implicit-intent/
如果您认为有用,请查看。
谢谢
答案 9 :(得分:2)
Intent是一个类,它绑定信息以执行某些操作。
示例:当用户在
中执行此类操作时,将一个活动的数据传递给另一个活动目前的活动。
答案 10 :(得分:2)
意图是执行操作的意图。
详细信息,请参阅
http://developer.android.com/reference/android/content/Intent.html
另外,在我的博客中
http://emergingandroidtech.blogspot.in/2014/11/what-is-intent-in-android.html
看一下它是否对你有帮助。
谢谢。
答案 11 :(得分:1)
从广义上讲,我们可以将意图定义为
当一个Activity想要启动另一个活动时,它会创建一个Object 调用Intent,指定它想要启动哪个Activity。
答案 12 :(得分:0)
Android应用程序可以包含零个或多个活动。当您的应用程序有多个活动时,您通常需要从一个活动导航到另一个活动。在Android中,您可以通过所谓的意图在活动之间导航。您可以使用putExtra()将一些数据传递给您想要通过意图启动的活动。
答案 13 :(得分:0)
来自论文Deep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013
link
意图在一些小而有效的行中被理解
从this主题开始,Android架构师Dianne Hackborn的一个简单答案将其称为data container
,实际上是它。
从Android架构的角度来看:
Intent是一个用于进程间通信的数据容器。它建立在Android架构的Binder
之上。
答案 14 :(得分:0)
意图用于从一个活动启动另一个活动。它基本上用于多种目的,例如从一个活动向另一个活动发送数据,以及用于触发目的。
它们基本上是两种类型
隐含意图。
显式意图。
作为一个初学者,我知道这一点,我认为这将给出一些关于android意图的基本概念
答案 15 :(得分:-1)
意图基本上是一种将数据从一个活动传递到另一个活动的方式