`

Intent 详解

 
阅读更多

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详解最新版本

    本文档主要讲述的是Android_Intent详解;Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯。比如说调用startActivity()来启动一个activity,或者由...

    Android学习总结-Intent详解.doc

    Intent在Android开发中扮演着至关重要的角色,它是四大组件(Activity、Service、BroadcastReceiver和ContentProvider)间通信的关键。Intent不仅用于应用间的交互,也可以在同一个应用内的不同组件之间传递信息。...

    Android_Intent详解

    ### Android Intent详解 #### 一、Intent的作用与概念 **Intent** 在Android开发中扮演着极为重要的角色,它是实现Android应用程序内部以及不同应用程序之间通信的关键工具。简而言之,Intent可以被视为一种消息...

    android_Intent详解

    ### Android Intent 详解 #### 一、Intent 的作用 `Intent` 在 Android 开发中扮演着极其重要的角色,它是用于启动或与应用组件(如 Activity、Service 或 BroadcastReceiver)交互的一种方式。简而言之,`Intent`...

    android-页面跳转-Activity&Intent详解,Bundle类介绍说明.doc

    Android 页面跳转和 Intent 详解,Bundle 类介绍说明 Android 页面跳转是移动应用程序中的一种基本交互方式,通过 Intent 和 Activity 两个组件来实现。Intent 是 Android 中的一个核心组件,用于在不同的 Activity...

    androidintent详解参照.pdf

    Android Intent 详解 Android Intent 是 Android 应用程序中的一种机制,用于在应用程序组件之间进行通讯和交互。 Intent 负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android 则根据此 Intent ...

    ZX-Android-Intent详解

    ### ZX-Android-Intent详解 #### 一、Intent的基本概念及作用 在Android开发中,`Intent`扮演着至关重要的角色。它是一个用于描述要执行的动作的抽象对象,主要用于协助完成Android应用程序内部不同组件间的通信。...

    Activity&Intent详解.pptx

    android Activity& android Intent详解, 入门级别

    《intent详解(二)》源码

    Intent详解(二)源码分析 Intent在Android系统中扮演着至关重要的角色,它是应用程序间通信(IPC,Inter-Process Communication)的主要手段。Intent不仅用于启动活动(Activity)、服务(Service),还可以用来...

    Android-Intent详解.doc编程资料

    Android-Intent详解.doc

    Android Activity与Intent详解及示例代码

    Intent intent = new Intent(this, TargetActivity.class); startActivity(intent); ``` 如果需要传递数据,可以使用`putExtra()`方法: ```java intent.putExtra("key", "value"); ``` 然后在目标Activity的`...

    Android 隐式Intent的实例详解

    “Android 隐式Intent 的实例详解” Android 隐式Intent 是一种特殊的 Intent,用于在不明确设置激活对象的前提下寻找最匹配的组件。它的核心思想是通过在 AndroidManifest.xml 文件中设置意图过滤器,来指定 ...

    本人整理的android开发文档,第5章 Intent

    ### Android开发文档:Intent详解 #### 一、Intent概述 在Android开发中,`Intent`是一种核心机制,用于实现应用程序内部或跨应用组件间的通信。它不仅能够启动新的活动(Activity),还能广播消息,使应用组件能...

    Android经典设计源码-Intent_TabHostSample.rar

    一、Intent详解 Intent在Android中起着桥梁的作用,它连接了应用程序的不同组件,如Activity、Service、BroadcastReceiver等。Intent分为显式Intent和隐式Intent两种类型。显式Intent通过指定组件的完整类名来启动...

    Android Intent传递数据大小限制详解

    在sendBroadcast,startActivity时,我们会用到Intent。 Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化对象,Parcelable与Serializable。 Intent传递数据时,如果数据太大,可能...

    android intent 实例详解

    ### Android Intent 机制详解 #### 一、Intent 的基本概念 **Intent** 是 Android 四大应用组件(Activity、Service、Broadcast Receiver 和 Content Provider)之间通信的重要桥梁。它是一种消息对象,用来描述一...

Global site tag (gtag.js) - Google Analytics