一.Intent的介绍

Intent的中文意思是“意图,意向”, Intent对Android的核心和灵魂,是各组件之间的桥梁。四大组件分别为Activity 、Service、BroadcastReceiver、ContentProvider。

而这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的Android应用。

Intent的中文意思为“意图”,在Android中可以理解为想要做什么,What do want to do? 所以什么时候要用到Intent就很好理解了。

Activity、Service和Broadcast receiver之间是通过Intent进行通信的,而另外一个组件Content Provider本身就是一种通信机制,不需要通过Intent。

二.公共构造函数:

1、Intent() 空构造函数

2、Intent(Intent o) 拷贝构造函数

3、Intent(String action) 指定action类型的构造函数

4、Intent(String action, Uri uri) 指定Action类型和Uri的构造函数,URI主要是结合程序之间的数据共享ContentProvider

5、Intent(Context packageContext, Class<?> cls) 传入组件的构造函数,也就是上文提到的

6、Intent(String action, Uri uri, Context packageContext, Class<?> cls) 前两种结合体

Intent有六种构造函数,3、4、5是最常用的,并不是其他没用!

Intent(String action, Uri uri)  的action就是对应在AndroidMainfest.xml中的action节点的name属性值。在Intent类中定义了很多的Action和Category常量。

三.Intent的属性

Intent的相关属性:

  • Intent由以下各个组成部分:
  • component(组件):目的组件
  • action(动作):用来表现意图的行动
  • category(类别):用来表现动作的类别
  • data(数据):表示与动作要操纵的数据
  • type(数据类型):对于data范例的描写
  • extras(扩展信息):扩展信息(传值)
  • Flags(标志位):期望这个意图的运行模式

1.component:目的组件

Intent的Compent属性指定Intent的的目标组件的类名称。

显示跳转

1、Intent跳转

Intent intent =new Intent(源Activity的对象,目标Activity的class);

startActivity(intent);

三种代码方式的跳转 其实代码都是一样

//No1

Intent intent = new Intent();

创建Intent组件来响应

ComponentName cpN = new ComponentName(MainActivity.this, OtherActivity.class);

intent.setComponent(cpN);

startActivity(intent);

//No2

Intent intent = new Intent();

intent.setClass(MainActivity.this, OtherActivity.class);

startActivity(intent);

//No3 更简单的

Intent intent = new Intent(MainActivity.this, OtherActivity.class);

startActivity(intent);

2.Action动作   用来表示意图的行动 不同应用之间使用Action跳转

category 类型 与Action是一起使用   不能少,也可以跳转,但是很含蓄

以下是Intent类中预定义的部分action:

ACTION_CALL--目标组件为activity, 代表拨号动作;

ACTION_EDIT--目标组件为activity, 代表向用户显示数据以供其编辑的动作;

ACTION_MAIN--目标组件为activity, 表示作为task中的初始activity启动;

ACTION_BATTERY_LOW--目标组件为broadcastReceiver, 提醒手机电量过低;

ACTION_SCREEN_ON--目标组件为broadcast, 表示开启屏幕.

3.data(数据):表示与动作要操纵的数据

表示android要访问的数据 也可以在intent_filter里面设置

  • type(数据类型):对于data范例的描写
  • 一个完整的Uri由scheme、host、port、path组成,格式是<scheme>://<host>:<port>/<path>

//No6 播放音乐

Intent intent = new Intent();

intent.setAction(Intent.ACTION_VIEW);

// intent.setData(Uri.parse("file://storage/朋友.mp3"));

intent.setDataAndType(Uri.parse("file://storage/朋友.mp3"), "audio/mp3");

startActivity(intent);

4. Category属性

Intent中的Category属性是一个执行动作Action的附加信息。比如:CATEGORY_HOME则表示放回到Home界面,ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个。下表是SDK文档中关于Category的信息。

<category android:name="android.intent.category.DEFAULT"/> 默认

<category android:name="android.intent.category.LAUNCHER" /> 系统启动

5. Type属性

Intent的Type属性显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。

6.Intent的Extra属性

Intent的Extra属性是添加一些组件的附加信息。比如,如果我们要通过一个Activity来发送一个Email,就可以通过Extra属性来添加subject和body。

// 调用浏览器

Uri webViewUri = Uri.parse("http://blog.csdn.net/zuolongsnail");

Intent intent = new Intent(Intent.ACTION_VIEW, webViewUri);

// 调用地图

Uri mapUri = Uri.parse("geo:100,100");

Intent intent = new Intent(Intent.ACTION_VIEW, mapUri);

// 播放mp3

Uri playUri = Uri.parse("file:///sdcard/test.mp3");

Intent intent = new Intent(Intent.ACTION_VIEW, playUri);

intent.setDataAndType(playUri, "audio/mp3");

// 调用拨打电话

Uri dialUri = Uri.parse("tel:10086");

Intent intent = new Intent(Intent.ACTION_DIAL, dialUri);

// 直接拨打电话,需要加上权限

Uri callUri = Uri.parse("tel:10086");

Intent intent = new Intent(Intent.ACTION_CALL, callUri);

// 调用发邮件(这里要事先配置好的系统Email,否则是调不出发邮件界面的)

Uri emailUri = Uri.parse("mailto:zuolongsnail@163.com");

Intent intent = new Intent(Intent.ACTION_SENDTO, emailUri);

// 直接发邮件

Intent intent = new Intent(Intent.ACTION_SEND);

String[] tos = { "zuolongsnail@gmail.com" };

String[] ccs = { "zuolongsnail@163.com" };

intent.putExtra(Intent.EXTRA_EMAIL, tos);

intent.putExtra(Intent.EXTRA_CC, ccs);

intent.putExtra(Intent.EXTRA_TEXT, "the email text");

intent.putExtra(Intent.EXTRA_SUBJECT, "subject");

intent.setType("text/plain");

Intent.createChooser(intent, "Choose Email Client");

// 发短信

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.putExtra("sms_body", "the sms text");

intent.setType("vnd.android-dir/mms-sms");

// 直接发短信

Uri smsToUri = Uri.parse("smsto:10086");

Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);

intent.putExtra("sms_body", "the sms text");

// 发彩信

Uri mmsUri = Uri.parse("content://media/external/images/media/23");

Intent intent = new Intent(Intent.ACTION_SEND);

intent.putExtra("sms_body", "the sms text");

intent.putExtra(Intent.EXTRA_STREAM, mmsUri);

intent.setType("image/png");

// 卸载应用

Uri uninstallUri = Uri.fromParts("package", "com.app.test", null);

Intent intent = new Intent(Intent.ACTION_DELETE, uninstallUri);

// 安装应用

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.setDataAndType(Uri.fromFile(new File("/sdcard/test.apk"), "application/vnd.android.package-archive");

// 在Android Market中查找应用

Uri uri = Uri.parse("market://search?q=愤怒的小鸟");

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

四.带返回结果的跳转

Intent intent = new Intent(MainActivity.this , OtherActivity.class);

//        startActivity(intent);

//requestCode  int  请求码

startActivityForResult(intent, requestCode);

必须覆写     当返回这个Activity的时候 响应

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// TODO Auto-generated method stub

super.onActivityResult(requestCode, resultCode, data);

}

再另一个Activity上  设置结果码

//resultCode  结果码

this.setResult(resultCode)

//设置结果码切 往回传递数据

Intent in = new Intent();

in.putExtra("test", test);

this.setResult(2,in);

注意,在setResult后,要调用finish()销毁当前的Activity,否则无法返回到原来的Activity,就无法执行原来Activity的onActivityResult函数,看到当前的Activity没反应。

Intent Action 隐士跳转 自定义的

调用系统的Action 其中系统的data type这些需要去查API。

Android中Intent的介绍相关推荐

  1. Android中Intent介绍

    Android中Intent主要分为显式Intent和隐式Intent,今天会主要讲隐式Intent 一.显式Intent 最常用的就是下面这种形式 Intent intent = new Inten ...

  2. Android中Intent传递对象的两种方法(Serializable,Parcelable)

    这篇文章转自博客园 Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putPa ...

  3. android集合方法,android中intent传递list或者对象的方法

    本文实例讲述了android中intent传递list或者对象的方法.分享给大家供大家参考.具体实现方法如下: 方法一: 如果单纯的传递List 或者List的话 就可以直接使用 代码如下: inte ...

  4. Android 中intent传递序列化信息(传递类)

    Android 中不同activity之间传递信息 一般Android 中不同activity之间传递信息通过intent. 传递普通的信息,直接通过intent.putExtra()来实现. 通过上 ...

  5. 【Android】Android中Intent的用法总结

    转载▼ 来源:http://blog.sina.com.cn/s/blog_5f1fe33f0100n5e1.html  Intent只在Android中特有,我把它比作一种运载工具,就像飞机一样,会 ...

  6. Android中Intent传递Object和ArrayListObject对象---笔记

    首先看一下Intent的官方的API. 传递一些基本类型数据的方法如下: putExtra(String name, int value) putExtra(String name, String v ...

  7. 关于Android中Intent传递Serialzilable数据的问题

    2019独角兽企业重金招聘Python工程师标准>>> 之前写程序,如果是队列数据的话,一般都是用ArrayList来作为存储介质,但是现在接手公司的新项目,因为之前这个公司是在wi ...

  8. Android中Intent.setAction简单使用

    1首先大家需要在主界面中拖入一个按钮, 上代码 <?xml version="1.0" encoding="utf-8"?> <LinearL ...

  9. Android中的cookie介绍

    android 客户端 Cookie处理 Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). Cookie ...

  10. android中intent放数据类型,Android Intent传递数据底层分析详细介绍

    Android  Intent传递数据底层分析详细介绍 我们知道在Activity切换时,如果需要向下一个ActivityB传递数据,可以借助Intent对象的putExtra方法. 但是不知各位有没 ...

最新文章

  1. tensorBoard 初级实现
  2. Android系统Surface机制的SurfaceFlinger服务渲染应用程序UI的过程分析
  3. nyoj 712 探寻宝藏
  4. SVM熟练到精通4:偏离点与松弛变量
  5. java葵花宝典_JAVA程序员想入职跳槽,这些基本功一定要做好,你给自己打几分?...
  6. 刘歧:让人生不留遗憾
  7. UNIX操作-命令快捷键
  8. .NET 4.0新增命名空间:System.Collections.Concurrent
  9. 闪光灯slave是什么意思_闪光灯实战讲解 | 室内光线+闪光灯使用配合=完美光效...
  10. java 获取本机的ip和mac_java获取本机ip和mac地址
  11. HLSL Tips 1:如何把输入映射到输出像素
  12. 演讲《云图,让阅读更精彩(Better Cloudary™, Better Reading)》
  13. hbase1.1.1 连接集群_hbase1.2.3集群搭建
  14. django 业务代码写哪儿_测试人员快速上手Django指南
  15. 推荐系统评测指标—精准率(Precision)、召回率(Recall)、F值(F-Measure)
  16. 软件工程4 用例建模
  17. 万维考试系统python_万维题库管理系统单机版(万维考试管理软件)V201706 最新官方版...
  18. 机器学习—确定系数R2
  19. notepad下载(官网进不去)
  20. 蓝桥杯练习 小明上楼梯(递归设计)

热门文章

  1. MPU6050-扫盲
  2. 2021-07-06
  3. ping结果中TTL是什么意思
  4. 实践数据湖iceberg 第十一课 测试分区表完整流程(造数、建表、合并、删快照)
  5. 好心情:抗抑郁药物的不良反应和处理措施
  6. 安卓仿苹果音量调节_安卓不仿苹果静音键?千万别小瞧“静音键”, 功能强悍到无敌!...
  7. 杭州电子科技大学acm--2020
  8. python plot_surface 画表面网格图
  9. 17.PIO源码详解7-PIO_EP_MEM_ACCESS模块(PIO_EP_MEM_ACCESS.v)剖析
  10. 开学倒计时,实验室里的这些准备工作你做完了吗?-LIMS2