Android Intent 使用说明

来源:互联网 发布:java猜数字代码 编辑:程序博客网 时间:2024/06/05 18:53

Intent 的中文名是意图,意思是我想让你干什么,简单的说,就是传递数据。Intent是各个组件之间信息沟通的桥梁。既能在Activity之间沟通。又能在Activity 与Service之间沟通。也能在Activity与Broadcast 之间沟通。

一、完成的工作主要有3部分:

1.Intent 需要标明本次通信请求从哪里来。到哪里去、要怎么走。

2.发起方携带本次通信需要的数据内容,接收方对收到对Intent数据进行解包。

3.如果发起方要求判断接收方的处理结果,Intent就要负责让接收方传回应答的数据内容

为了做好以上工作,就要给Intent 配上必须的装备,Intent的组成部分见下表



二、显式Intent 直接指定来源类,属于精确匹配

    在声明一个Intent 对象时,需要指定两个参数,第一个参数表示跳转的来源页面,第二个参数表示接下来要跳转到的页面类。如下3种方法:

   1. 构造函数中指定

      new Intent(this,ObjActivity.class)

   2.调用setClass指定

     Intnet intent = new Intent()

     intent.setClass(this,ObjActiviy.class)

  3.调用setComponent方法指定

     Intnet intent = new Intent()  

    ComponentName component = new   ComponentName(this,ObjeActivity.class)

三、隐式Intent  ,没有明确指定要跳转的类名,只给出一个动作让系统匹配拥有相同字串定义的目标,属于模糊匹配。

   因为常常不希望直接暴露源码的类名,只给出一个事先定义好的名称,因此Intent起到了过滤作用。这个定义好的动作名称是一个字符串,可以是自己定义的动作,也可以是已有的系统动作,系统动作的取值说明如下表:

 

这个动作名称通过setAction方法指定,也可以通过构造函数Intent(String action)直接生成Intent对象 Uri 和Category便是这样的路径与门类信息。Uri数据可通过构造函数Intent(String action,Uri uri)在生成对象时一起指定,也可通过setData方法指定(setData 这个名字有歧义,实际就是setUri);Category 可通过 addCategory 方法指定,之所以用add而不用set方法,是因为一个Intent可同时设置多个Category,一起进行过滤。下面是Uri例子

Intent intent = new  Intent();intent.setAction(intent.ACTION_CALL);Uri uri = Uri.parse("tel:"+"15960238696");intent.setData(uri);startActivity(intent);隐式Intent 还用到了过滤器的概念,即把不符合匹配条件的过滤掉,剩下符合条件的按照优先顺序调用。创建一个Android工程 ,AndroidManifest.xml里的intent-filter就是XML中的过滤器。比如下面这个最常见的主页面MainActivity,activity节点下面便设置里action和category的过滤条件。其中,android。action。MAIN表示App的入口动作,android.intent.category.LAUNCHER表示App启动是调用
<activity android:name=".MainActivity" >    <intent-filter>        <action android:name="android.intent.action.MAIN" />        <category android:name="android.intent.category.LAUNCHER" />    </intent-filter></activity>


原创粉丝点击