使用Intent可以激活Android应用三种类型的核心组件:活动、服务和广播接收者。

Intent可以划分成显式意图隐式意图

显式意图: 调用Intent.setComponent() \ Intent.setClassName或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了要激活的组件是哪个组件

比如以下代码为显式意图:

@Overridepublic void onClick(View view) {//设置跳转到其他应用Intent intent=new Intent();intent.setClassName("com.example.mysingleinstance1","com.example.mysingleinstance1.MainActivity");startActivity(intent);}});

隐式意图: 没有明确指定组件名的Intent为隐式意图。Android系统会根据隐式意图中设置的 动作(action)类别(category)数据(URI和数据类型) 找到最合适的组件来处理这个意图。

AndroidManifest.xml 文件中设置动作、类别、数据、

intent-filter 设置意图过滤器
action设置动作
category 设置类别

startActivity是这个方法内部为Intent自动添加的类别android.intent.category.DEFAULT 所以我们要在XML中添加

data 设置数据

相当于https://
android:scheme=“example”

域名
android:host=“www.biao.cn”

路径
android:path="/kl"/

设置数据的类型
android:mimeType=“image”

<activityandroid:name=".OtherActivity"android:label="新Activity"android:exported="true"><!--intent-filter意图过滤器--><intent-filter><!--action动作--><action android:name="com.example.xxx"/><!--类别category--><category android:name="com.example.Other.java"/><!--startActivity是这个方法内部为Intent添加的类别android.intent.category.DEFAULT--><category android:name="android.intent.category.DEFAULT"/><!--数据--><!--只要schem和host能够匹配上就行--><!--example://www.biao.cn-->                <!--限制主机名-->        <!--限制路径--><data android:scheme="example" android:host="www.biao.cn" android:path="/kl"/><!--设置数据的类型--><data android:mimeType="image/*"/></intent-filter></activity>

调用隐式意图:

intent.setAction(“com.example.xxx”); 设置动作

intent.addCategory(“com.example.Other.java”); 添加类别

intent.setData(Uri.parse(“example://www.biao.cn/kl”)); 设置数据。xml文件中没限定路径就可以随便写

intent.setType(“image/jpeg”); 数据的类型。
方法内部会清除前面setData方法所设置的数据。。在setData前面设置setType也是不行的。所以我们要用Intent方法内部的setDataAndType可以同时设置数据和数据类型

intent.setDataAndType(Uri.parse(“example://www.biao.cn/kl”),“image/jpeg”); 同时设置数据和数据类型

this.findViewById(R.id.openActivity).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {/** 只要Intent中的动作(Action)和类别(Category)都出现过滤器(Intent-Filter中,就能与之匹配,否则匹配失败)* *///                startActivity(new Intent(MainActivity.this,OtherActivity.class));//显式意图Intent intent=new Intent();//采用隐式意图激活Activity//设置动作intent.setAction("com.example.xxx");//添加类别intent.addCategory("com.example.Other.java");//数据的类型//方法内部会清除前面setData方法所设置的数据。。在setData前面设置setType也是不行的。// 所以我们要用Intent方法内部的setDataAndType可以同时设置数据和数据类型//intent.setType("image/jpeg");//数据//intent.setData(Uri.parse("example://www.biao.cn/kl"));//后面的路径可以随便写//同时设置数据和数据类型intent.setDataAndType(Uri.parse("example://www.biao.cn/kl"),"image/jpeg");//激活启动//startActivity这个方法内部会添加android.intent.category.DEFAULT。所以要在过滤器中添加才能完全匹配startActivity(intent);}});

Intent意图的深入相关推荐

  1. android 之intent(意图)详解

    如果一个Activity想启动另外一个Activity,则必须使用意图对象:intent. 意图(intent):想干嘛 意图的功能: A.激活组件 B.携带数据 意图的分类: A.显式意图:指定了要 ...

  2. 关于android Intent意图的一点心得

    Intent 意图,android里通过它实现activity的指定跳转,一般可以通过它来传递某些参数给跳转到activity. 但是这中间也会出现一些问题,我以前没有注意到,最近在做项目的过程中才发 ...

  3. Android(Intent意图初解,显示意图,隐式意图,意图过滤器)

    Android Intent 简介:Intent被称为意图,是安卓程序中的一种比较重要的组件间交户的方式,可以用于组件间的跳转,传递数据等.通常用作启动Activity,Service以及发送广播等. ...

  4. android小知识之意图(intent)

    android中的意图有显示意图和隐式意图两种, 显示意图要求必须知道被激活组件的包和class 隐式意图只需要知道跳转activity的动作和数据,就可以激活对应的组件 A 主activity  B ...

  5. 关于android隐式启动activity的分析和说明,Android学习之Intent中显示意图和隐式意图的用法实例分析...

    本文实例讲述了Android学习之Intent中显示意图和隐式意图的用法.分享给大家供大家参考,具体如下: Intent(意图)主要是解决Android应用的各项组件之间的通讯. Intent负责对应 ...

  6. Intent使用意图之~添加Category

     通过Intent意图可以跳转到不同的Activity页面,但是在意图Intent下有三个不同的字段分别是:action.Category.Data在程序中可以实现不同的功能:废话不多说接下来先来 ...

  7. Android -- Intent

    Intent                                                                                       Android ...

  8. 如何使用意图将对象从一个Android活动发送到另一个?

    如何使用Intent类的putExtra()方法将自定义类型的对象从一个Activity传递到另一个Activity ? #1楼 感谢您的包裹帮助,但我发现了另一种可选解决方案 public clas ...

  9. Android中的意图匹配--IntentFilter的作用

    [0]Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent ...

最新文章

  1. 判别模型和生成模型的区别
  2. C语言中的#ifndef、#def、#endif等宏
  3. larvel mysql count,php – 模型中的Laravel计数函数,然后sortBy count()
  4. 122亿元消费券引爆首都初夏,京东618如何成为经济复苏加速引擎
  5. 基于visual Studio2013解决C语言竞赛题之0502最小数替换
  6. Pandas 文本数据方法 slice( )
  7. 【编译器】VSCode配置Go语言开发环境
  8. CV学习笔记(六):均值滤波与高斯滤波
  9. 应用chroot构建最小运行系统
  10. Flink查询关联Hbase输出
  11. 生活随记 - 2020国庆第八天
  12. [转]一些漢字、字體/字型、内碼、輸入法資料的整理
  13. 《墨菲定律》——决策中的学问
  14. 高等教育学备考:教育学概述
  15. 备份微信聊天记录为 txt 格式保存(免 root)
  16. SAP ABAP ZBA_R005获得事务代码分段,完成关键用户参数权限
  17. Java之static静态对象
  18. 一个芯片工作的基本条件
  19. math-常见导数公式
  20. 如何使用WordPress建立亚马逊会员商店

热门文章

  1. hamming code/汉明编码
  2. Moasure魔尺 | 精装礼盒装开箱过程
  3. 水位传感器c语言程序,基于STC89C51单片机的水位传感器控制系统设计.doc
  4. 浅谈JAVA的往日辉煌与未来趋势
  5. 3.Java流程控制语句
  6. 自锁时间电路plc_起动、自锁和停止控制的PLC线路与梯形图
  7. 浏览器缓存机制(强缓存和协商缓存)总结
  8. 关于isl28022电源芯片的校准寄存器的配置问题
  9. chan队列之发送方等待接收方处理结果
  10. 怎么把视频转换成mp3格式?