一.Intent简介

  Intent中文是“意图,意向”,它是Android中四大组件通讯的纽带,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。

二.启动组件的方法

三.Intent的属性(7个)

  

component(组件):目的组件----Action(动作):用来表现意图的行动----category(类别):用来表现动作的类别----data(数据):表示与动作要操纵的数据

type(数据类型):对于data范例的描写----extras(扩展信息):扩展信息----flags(标志位):期望这个意图的运行模式

三.代码实现

(1)ComponentActivity.class

  

/**
* 直接查找法(通过组件名称)
*/
public class ComponentActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_component);
} /**
* 直接查找法(通过组件名称)
* @param view
*/
public void componetClick(View view){
/*Intent intent = new Intent();
ComponentName componentName = new ComponentName(this,IntentActivity.class);
intent.setComponent(componentName);*/
Intent intent = new Intent(this,IntentActivity.class);
startActivity(intent);
} /**
* 使用间接法(通过action属性和category属性)
* @param view
* 在Activity的清单配置文件中,必须使用默认的类别
* android.intent.category.DEFAULT
*/
public void actionClick(View view){
/*Intent intent = new Intent();
intent.setAction("com.langdon.action.MY_ACTION");*/
Intent intent = new Intent("com.langdon.action.MY_ACTION");
intent.addCategory("com.langdon.category.MY_CATEGORY");
startActivity(intent);
} /**
* data属性,一般与action配合使用(最常见的一种使用方法)
* type属性,表示数据的类型
* @param view
*/
public void dataClick(View view){
Intent intent = new Intent();
//intent.setAction("com.langdon.action.MY_ACTION");
intent.setAction(Intent.ACTION_VIEW);
Uri data = Uri.parse("http://www.baidu.com"); //intent.setData(data);//会把type属性设置为null
//intent.setType("text/html");//会把data属性设置为null
//要使用type和data,必须使用以下方法,匹配时必须两者同时匹配才能通过
intent.setDataAndType(data,"text/html");
startActivity(intent);
} /**
* 代码实现Activity的启动模式
* @param view
*/
public void flagClick(View view){
Intent intent = new Intent(this,FlagActivity.class);
//设置Activity的启动模式
//Intent.FLAG_ACTIVITY_NEW_TASK ---在新的任务中启动Activity,如果有,那么在本任务中启动
//Intent.FLAG_ACTIVITY_CLEAR_TASK ---相当于SingleTask
//Intent.FLAG_ACTIVITY_CLEAR_TOP ---相当于SingleTop
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } }

  

(2)activity_component.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_componer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.langdon.taiyang.androidtest.Intent.ComponentActivity"> <Button
android:id="@+id/bt_component"
android:text="通过component组件名查找"
android:onClick="componetClick"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/bt_action"
android:layout_below="@+id/bt_component"
android:text="通过action组件名查找"
android:onClick="actionClick"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/bt_data"
android:layout_below="@+id/bt_action"
android:text="通过Data组件名查找"
android:onClick="dataClick"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/bt_flag"
android:layout_below="@+id/bt_data"
android:text="flag启动模式"
android:onClick="flagClick"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>

  

(3)AndroidManifest.xml(IntentActivity---NextActivity---DataActivity都只含有一个TextView,用来在ComponentActivity.class点击按钮显示不同的文字)

 <activity android:name=".Intent.ComponentActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Intent.IntentActivity">
<intent-filter android:priority="-1">
<action android:name="com.langdon.action.MY_ACTION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".Intent.NextActivity">
<intent-filter android:priority="2">
<action android:name="com.langdon.action.MY_ACTION" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.langdon.category.MY_CATEGORY" />
</intent-filter>
</activity>
<activity android:name=".Intent.DataActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:host="www.baidu.com" android:mimeType="text/html"
android:scheme="http" />
</intent-filter>
</activity>
<activity android:name=".Intent.FlagActivity" />

  

运行结果如下:

        图1

       图2

        图3

其中图3是点击第三个按钮显示的,其余三个按钮点击后会有一个如图1的textView提

Intent系列讲解---Intent简介以及相关属性的更多相关文章

  1. 【转】Android总结篇系列:Activity Intent Flags及Task相关属性

    [转]Android总结篇系列:Activity Intent Flags及Task相关属性 同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http:// ...

  2. Android总结篇系列:Activity Intent Flags及Task相关属性

    同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http://blog.csdn.net/liuhe688/article/details/6761337 ...

  3. Activity Intent Flags及Task相关属性

    转自http://www.cnblogs.com/lwbqqyumidi/p/3775479.html 今天我们来讲一下Activity的task相关内容. 上次我们讲到Activity的四种启动模式 ...

  4. 我的Android 4 学习系列之Intent 和 Broadcast Reciever

    目录 Intent 简介 使用隐式和显式Intent启动Activity.子Acitivity和Service 使用Linkify 使用Broadcast Intent 广播事件 使用 Pending ...

  5. 最全面的Android Intent机制讲解

    对于大型软件开发经验较少的程序员来说,这可能是一个不太容易理解的抽象概念,因为它与我们平常使用的简单函数调用,或者通过库调用接口的方式不太一样.在 Intent 的使用中你看不到直接的函数调用,相对函 ...

  6. Intent的Component,Action和Category属性详解-android学习之旅(五十)

    Component属性 代码示例 public class MainActivity extends Activity{ @Override protected void onCreate(Bundl ...

  7. Android UI系列-----RelativeLayout的相关属性

    本篇随笔将主要记录一些RelatieLayout的相关属性,并将猜拳游戏通过RelativeLayout实现出来 RelativeLayout的几组属性 第一组属性:android:layout_be ...

  8. Spring 系列: Spring 框架简介 -7个部分

    Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级 ...

  9. AndroidManifest.xml中<activity></activity>相关属性说明

    虽说,从事android开发有一定时间了,对于Activity大家也都不陌生,但是具体的对于Activity中相关属性的含义有必要做一个系统的总结: intent-filteraction: 来指定响 ...

随机推荐

  1. uva 10026 Shoemaker's Problem

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  2. ural 1294 Mars Satellites

    #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> u ...

  3. Android应用资源的分类和存储

    Android应用资源可以分为两大类1.无法直接访问的原生资源,保存在asset目录下2.可通过R资源清单类访问的资源,保存在res目录下 Android应用资源的存储/res/anim:存放定义补间 ...

  4. Delphi IDHTTP用法详解(六种用法)

    一.IDHTTP的基本用法 IDHttp和WebBrowser一样,都可以实现抓取远端网页的功能,但是http方式更快.更节约资源,缺点是需要手动维护cook,连接等 IDHttp的创建,需要引入ID ...

  5. SmartBusinessDevFramework架构设计-1:结构简介

    SmartBusinessDevFramework 简介 基于.net 4.0 开发的企业级系统框架 功能 1 自定义ORM.如果客官喜欢NHibernate EntityFramework ,并对其 ...

  6. 数组、List和ArrayList的区别

    有些知识点可能平时一直在使用,不过实际开发中我们可能只是知其然不知其所以然,所以经常的总结会对我们的提高和进步有很大的帮助,这里记录自己在工作之余的问题,持续更新,欢迎高手斧正. 数组.List和Ar ...

  7. ubuntu的web开发环境搭建

    为了保持mac的干净整洁,决定用PD搭建一条web开发环境,记下整个过程. ubuntu 首先是操作系统,本着习惯就好的原则,选用了Ubuntu server 12.04.4版.系统的安装很简单,ht ...

  8. OI生涯中三届NOIP(2012-2014)流水账

    NOIP2012: 才摸了三四个月OI就上阵当炮灰,果然一下就被轰得渣都不剩了. D1看到T1这道模拟水题时很激动,立马就把它A了.然后T2就不会了,果断写了个阶乘的暴力,根本没有想过什么排序贪心.T ...

  9. 关于本学期西南交通大学ACM-ICPC校集训队 训练计划(Beta 1.0)

    在第十周新秀杯之后,从第十一周起的训练计划如下: 1.十一周的周一至周五进行ACM校集训队申请.申请方式从2014年11月17日0:00开始,发送申请者的姓名.学号.专业.电话.QQ以及大学(针对大一 ...

  10. java随机数生成器

    一.java.lang.Math.Random 调用这个Math.Random()函数能够返回带正号的double值,取值范围是[0.0,1.0)的左闭右开区间,并在该范围内(近似)均匀分布. 二.j ...