Intent意图
Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent。Intent提供了一种通用的消息系统,他允许在你的应用程序与其他的应用程序间传递Intent来执行动作和产生事件。
使用Intent可以划分三种类型的核心组件:Activity(活动),Service(服务),Broadcast(广播)
Intent的常用属性
1,Component (应用程序中有很多Activity,根据ComponentName决定要启动某一个Activity)
2,Action (指定下一个Activity的功能)
3,Data (传输了什么数据) Uri数据
4,Extras (存放数据) Bundle
5,Category (类别,在该属性中可通过一个字符串来表示启动窗口时符合的类别)
6,Flags (启动标识值)
显示意图(explicit) 和 隐式意图(implicit)
显示意图:调用Intent.setComponent() / Intent.setClassName() /Intent.setClass()
等方法明确指定了要激活的组件名称的Intent显示意图,显示意图明确指定了要激活的组件是哪个组件。
Intent intent= new Intent(this, B.class) intent.setClassName("com.lydia.day01", "com.lydia.day01.MainActivity3"); intent.setClass(TelPhoneActivity.this, MainActivity3.class); intent.setComponent(new ComponentName("com.tarena.day01","com.tarena.day01.MainActivity3"));
隐式意图:没有明确指定组件的Intent,而是通过设置一些Intent Filter来让系统去筛选合适的Acitivity去启动。
主要利用Intent的action属性和Category属性
AndroidManifest.xml中
<Activity android:name=".MainActiviy01"> <intent-filter> <action android:name="com.lydia.wh"></action> <category android:name="com.lydia.category.android"/> </intent-filter> </Activity>
Activity中:
intent.setAction("com.lydia.wh"); intent.addCategory("com.lydia.category.android"); startAvtivity(intent);
注意:这样是匹配不了的,因为startActivity(intent)的方法内部为Intent增加了下面这个类别:
<category android:name="android.intent.category.DEFAULT"/>
所以:我们定义的activity如果接受implicit intent的话,intent-filer就一定要加上android.intent.category.DEFAULT这个category。
Data匹配
1,如果intent-filter 中加入:
<data android:scheme="wuhan" android:host="www.baidu.com" android:path="/charles"> </data>
则必须和:wuhan://www.027tarena.com/charles 来匹配,否则不成功
intent.setData(Uri.parse("wuhan://www.baidu.com/charles"));
2,如果intent-filter 中加入:
<data android:mimeType="image/*"></data> <--匹配图片-->
则:
intent.setDataAndType(Uri.parse("wuhan://www.baidu.com/charles"), "image/jpeg");
Intent传值:
发送代码:
// intent.putExtra("123", "123");
// intent.putExtra("456", "456");
---------------------
Intent intent = new Intent(...);
Bundle bundle = new Bundle();
bundle.putString("param", "value");
intent.putExtras(bundle);
context.startActivity(intent);
--------------------------
传入对象:Entity实体类一定要实现序列号接口
//传递一个对象:方法1,Entity要实现Serializable接口
extras.putSerializable("user", (Serializable) p);
//传递一个对象:方法2,Entity要实现Parcelable接口
// extras.putParcelable("user", (Parcelable) p);
===============================
接收代码:
intent = this.getIntent();
// String ss = intent.getStringExtra("123");
// String high = intent.getStringExtra("456");
---------------------
Bundle bunde = intent.getExtras();
String name = bunde.get("param");
---------------------
Person p = (Person) intent.getSerializableExtra("user");
//Person p = (Person) intent.getParcelableExtra("user");
相关推荐
本文档主要讲述的是Android_Intent详解;Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯。比如说调用startActivity()来启动一个activity,或者由...
Intent在Android开发中扮演着至关重要的角色,它是四大组件(Activity、Service、BroadcastReceiver和ContentProvider)间通信的关键。Intent不仅用于应用间的交互,也可以在同一个应用内的不同组件之间传递信息。...
### Android Intent详解 #### 一、Intent的作用与概念 **Intent** 在Android开发中扮演着极为重要的角色,它是实现Android应用程序内部以及不同应用程序之间通信的关键工具。简而言之,Intent可以被视为一种消息...
### Android Intent 详解 #### 一、Intent 的作用 `Intent` 在 Android 开发中扮演着极其重要的角色,它是用于启动或与应用组件(如 Activity、Service 或 BroadcastReceiver)交互的一种方式。简而言之,`Intent`...
Android 页面跳转和 Intent 详解,Bundle 类介绍说明 Android 页面跳转是移动应用程序中的一种基本交互方式,通过 Intent 和 Activity 两个组件来实现。Intent 是 Android 中的一个核心组件,用于在不同的 Activity...
Android Intent 详解 Android Intent 是 Android 应用程序中的一种机制,用于在应用程序组件之间进行通讯和交互。 Intent 负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android 则根据此 Intent ...
### ZX-Android-Intent详解 #### 一、Intent的基本概念及作用 在Android开发中,`Intent`扮演着至关重要的角色。它是一个用于描述要执行的动作的抽象对象,主要用于协助完成Android应用程序内部不同组件间的通信。...
android Activity& android Intent详解, 入门级别
Intent详解(二)源码分析 Intent在Android系统中扮演着至关重要的角色,它是应用程序间通信(IPC,Inter-Process Communication)的主要手段。Intent不仅用于启动活动(Activity)、服务(Service),还可以用来...
Android-Intent详解.doc
Intent intent = new Intent(this, TargetActivity.class); startActivity(intent); ``` 如果需要传递数据,可以使用`putExtra()`方法: ```java intent.putExtra("key", "value"); ``` 然后在目标Activity的`...
“Android 隐式Intent 的实例详解” Android 隐式Intent 是一种特殊的 Intent,用于在不明确设置激活对象的前提下寻找最匹配的组件。它的核心思想是通过在 AndroidManifest.xml 文件中设置意图过滤器,来指定 ...
### Android开发文档:Intent详解 #### 一、Intent概述 在Android开发中,`Intent`是一种核心机制,用于实现应用程序内部或跨应用组件间的通信。它不仅能够启动新的活动(Activity),还能广播消息,使应用组件能...
一、Intent详解 Intent在Android中起着桥梁的作用,它连接了应用程序的不同组件,如Activity、Service、BroadcastReceiver等。Intent分为显式Intent和隐式Intent两种类型。显式Intent通过指定组件的完整类名来启动...
在sendBroadcast,startActivity时,我们会用到Intent。 Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化对象,Parcelable与Serializable。 Intent传递数据时,如果数据太大,可能...
### Android Intent 机制详解 #### 一、Intent 的基本概念 **Intent** 是 Android 四大应用组件(Activity、Service、Broadcast Receiver 和 Content Provider)之间通信的重要桥梁。它是一种消息对象,用来描述一...