基础篇:5.熟练掌握Intent机制

  前言

    在讲解Intent之前,先来回顾下之前在哪些方面接触过这东西:

    (1)启动Activity:startActivity(Intent intent);  startActivityForResult(Intent intent);

     (2)发送广播: Context.sendBroadcast(Intent intent); Contxt.sendOrderBroadcast(Intent intent);

    (3)启动或绑定Service:  Context.startService(Intent intent);  Context.bindService(Intent intent);

  由此可见,android的三大组件都是通过Intent进行激活和各组件间进行数据传输,那么何为Intent?!

  Intent简介

  Intent是android程序中传输数据的核心对象,Intent在官方文档中的定义为:执行某操作的一个抽象描述。这个定义理解起来不是很直观。个人更喜欢这个定义:Intent负责对应用中一次操作的动作、动作涉及的数据、附加数据进行描述。Intent起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。

  Intent构成

  (1)ComponentName

    组件名称用来指定为处理Intent对象的组件,可以通过以下三种方法进行设置:

      a)  intent.setComponent(SecondActivity)   参数为要设置的组件名称

      b)  intent.setClass(MainActivity.this,SecondActivity.class)   第一个参数为当前Activity的this对象,第二个参数为要打开的Activity的class对象

      c)  intent.setClassName(MainActivity.this,SecondActivity)   第一个参数为当前Activity的this对象,第二个参数为要打开的Activity类对象

  (2)Action

    用来指明要实施的动作是什么,很大程度上决定了Intent的构建,一些常用的动作如下:

      ACTION_CALL         activity           启动一个电话.
      ACTION_EDIT         activity           显示用户编辑的数据.
      ACTION_MAIN         activity           作为Task中第一个Activity启动
      ACTION_SYNC         activity           同步手机与数据服务器上的数据.
      ACTION_BATTERY_LOW    broadcast receiver      电池电量过低警告.
      ACTION_HEADSET_PLUG     broadcast receiver      插拔耳机警告
      ACTION_SCREEN_ON       broadcast receiver     屏幕变亮警告.
      ACTION_TIMEZONE_CHANGED broadcast receiver     改变时区警告.

    除了官方给出的一些常用动作外,用户也可以自定义自己的动作,自定义动作字符串应包含程序包名的前缀,如com.example.alarm.xxx

    设置动作:  intent.setAction(String action)      获取动作:   intent.getAction(String action)

  (3)Data

    数据是作用在Intent上的数据的URI(通用资源标示符)和数据的MIME类型(已注册的数据类型主要有:application,audio,example,message,model,multipart,text,video),不同的动作有不同的数据规格。

    设置数据:intent.setData(Uri.parse("tel:18620390143"))//设置要拨打的号码

  (4)Extra

    附加数据用来为Intent添加附加信息:

    设置附加数据:  intent.setExtra("name","张光源")  第一个参数为附加信息名称,第二个参数为附加信息值

    获取附加数据:  intent.getExtra("name")   根据附加信息名称,获取相应数据值

  (5)IntentFilter

    隐式Intent(并不指明目标组件名称)需要通过过滤器<intent-filter>进行解析,一个过滤器对英语Intent对象的动作、数据、种类,过滤器需要检测隐式Intent的这三个字段,其中任何一个失败,则为解析失败。然而一个组件可以拥有多个过滤器,在这个过滤器上解析失败,有可能在其它过滤器解析成功。过滤器的使用如下:

       <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <data android:mimeType="video/mpeg" android:scheme="http">
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

  目前所接触到的Intent操作都是显式Intent(指定compoment),所以对Intent的解析方面了解还不够深入,待后期有更深理解再进行补充。

  附:经常接触的Intent实例:

       Intent intent=new Intent(MainActivity.this,MyAlarmReceiver.class);//指定跳转的Inetent
            intent.setAction("com.example.action.setalarm");//指定intent的action
            sender=PendingIntent.getBroadcast(MainActivity.this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);//指定PendingIntent
       Intent it=new Intent(context,AlarmMessage.class);//定制要跳转的activity
            it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 传递一个新的任务标记
            context.startActivity(it);//启动Intent

基础篇:5.熟练掌握Intent机制,布布扣,bubuko.com

时间: 2024-10-10 01:46:50

基础篇:5.熟练掌握Intent机制的相关文章

基础篇:4.熟练掌握BroadcastReceiver的接收和使用

1.广播 既然要谈论到广播接收器,那必然先要来谈谈广播,毕竟两者相辅相成.在Android系统中有各种各样的广播如常见的:电池的使用状态.电话的接听.短信的接收等.应用开发者也可以在程序中发送出各种广播.那么广播到底是个什么东西?!---广播是一种广泛运用在应用程序之间传输信息的机制.广播的发送可以通过以下两种方式发送: (1)Context.sendBroadcast---广播无序事件,理论上,所有的接收者同时接收到广播. (2)Context.sendOrderedBroadcast---广

基础篇:3.熟练掌握Activity的生命周期和使用方法

1.Activity的生命周期 只要谈到Activity的生命周期,就少不了会涉及到下面这张经典图: 从图中可以看出一个完整的Activity生命周期涉及了onCreate.onStart.onResume.onpause.onStop.onRestart.onDestroy这7个方法,根据这7个方法结合上图,可以将Activity生命周期大致分为以下几种情况: (1)启动Activity:系统调用onCreate---onStart---onResume,系统开始进入running状态. (2

基础篇:2.熟练掌握相关监听器的注册和使用

各类监听器的注册和使用 1.OnClickListener监听器:该监听器为单击事件监听器,常用于监听一些单击事件,如Button的单击事件.该监听器的事件监听在上一文章已介绍,在此不再赘述. 2.OnLongClickListener监听器:该监听器为长按时间监听器,与单击事件监听器的原理基本相同,该监听器的使用如下范例: button.SetOnLongClickListener(this);//注册监听 public boolean onLongClick(View v) { return

【Android的从零单排开发日记】之入门篇(十一)——Android的Intent机制

继续我们的Android之路吧.今天我要介绍的是Android的Intent. 对于基于组件的应用开发而言,不仅需要构造和寻找符合需求的组件,更重要的是要将组件有机的连接起来,互联互通交换信息,才能够最终提供应用所期望的服务.而为了能够更好地实现组件复用,充分地利用每一个组件的能力,就需要这些组件连接的模式足够灵活和统一,并且可以进行动态地扩展.所以Android提供了利用Intent对象建立连接并实现组件通信的模式.Intent对象是Android组件连接的核心,集中体现了整个组件连接模型的设

Android总结篇——Intent机制详解及示例总结

     最近在进行android开发过程中,在将 Intent传递给调用的组件并完成组件的调用时遇到点困难,并且之前对Intent的学习也是一知半解,最近特意为此拿出一些时间,对Intent部分进行了系统的学习并进行了部分实践,下面将自己的学习及Intent知识进行了详细的归纳整理,希望能帮助到同样遇到相同问题的博友.下面是Intent介绍.详解及Intent示例总结: 一.Intent介绍: Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与

Java基础篇Socket网络编程中的应用实例

说到java网络通讯章节的内容,刚入门的学员可能会感到比较头疼,应为Socket通信中一定会伴随有IO流的操作,当然对IO流比较熟练的哥们会觉得这是比较好玩的一章,因为一切都在他们的掌握之中,这样操作起来就显得非常得心应手,但是对于IO本来就不是多熟悉的哥们来说就有一定的困难了,在搞清楚IO流操作机制的同时还必须会应用到Socket通信中去,否则会对得到的结果感到非常郁闷和懊恼,下面就和大家一起分享一下自己遇到一点小麻烦后的感触以及给出的解决办法. 要求:客户端通过Socket通信技术上传本地一

小猪猪C++笔记基础篇(六)参数传递、函数重载、函数指针、调试帮助

小猪猪C++笔记基础篇(六) ————参数传递.函数重载.函数指针.调试帮助 关键词:参数传递.函数重载.函数指针.调试帮助 因为一些事情以及自己的懒惰,大概有一个星期没有继续读书了,已经不行了,赶紧写一篇压压惊.把我文章抱走的同学留个言嘛. 函数在变成里面是一个非常重要的组成部分,那么这一部分我们先简单的介绍一下参数是如何传递进入函数,函数如何返回结果的.然后我们再来看看函数重载是个什么样的机制,最后在介绍一下所谓的函数指针到底是个什么东西.那么直接开始正题吧: 一.函数的参数传递 我们知道函

js调试系列: 源码定位与调试[基础篇]

js调试系列目录: - 如果看了1, 2两篇,你对控制台应该有一个初步了解了,今天我们来个简单的调试.昨天留的三个课后练习,差不多就是今天要讲的内容.我们先来处理第一个问题:1. 查看文章下方 推荐 这个功能所调用的函数源码其实非常简单,点放大镜选中那个推荐即可.这个  votePost(cb_entryId,'Digg')  就是推荐按钮所调用的函数了,是不是非常简单. 第二个问题,定位到函数所在文件位置.其实也是非常简单的,当然,不熟悉控制台的朋友也许不知道怎么看.我在控制台输入 voteP

shell脚本编程之基础篇(二)

shell脚本编程之基础篇(二) ============================================================================== 概述: ============================================================================== 退出状态 ★进程使用退出状态来报告成功或失败 ◆0 代表成功,1-255代表失败 ◆$? 变量保存最近的命令退出状态 (查看:echo $?)