Intent 使用详解

极力推荐文章:欢迎收藏
Android 干货分享

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android
Intent 是一个消息传递对象,主要用于组建之间的通讯,例如:启动Activity、启动Service、传递Broadcast等
本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
- Intent 主要用途、流程图
- Intent 分类
- 隐式 Intent 接收过滤类型
- PendingIntent 使用方法
- Intent 7 大常用属性
- 使用ADB调试 Intent
- Intent 常用方法使用总结
Intent 流程图

1. Intent 主要用途
1. 启动Activity
startActivity()
无返回值,直接启动ActivitystartActivityForResult()
有返回值,返回值在onActivityResult() 回调
2. 启动Service
startService()
一次性操作bindService()
绑定组件,随组件生命周期结束而结束
3. 传递 Broadcast
sendBroadcast()
普通无序广播sendOrderedBroadcast()
有序广播sendStickyBroadcast()
持续黏性广播
2. Intent 分类
1.显示 Intent
按名称(完全限定类名)指定要启动的组件。
例如:
Intent intentActivity = new Intent(MainActivity.this,
ActivityMethods.class);
startActivity(intentActivity);
2.隐式 Intent
不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它
例如:
/**
* 发送短信
* **/
public static void SendMms(Context context, String mmsString) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, mmsString);
sendIntent.setType("text/plain");
// sendIntent.setData(Uri.parse("smsto:"));
// This ensures only SMS apps respond
// 修改 Intnent 选择器Tittle
String title = context.getResources().getString(R.string.hello_world);
Intent chooser = Intent.createChooser(sendIntent, title);
// 验证是否有Activity 接收
if (sendIntent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(chooser);
}
}
3. 隐式Intent 接收过滤类型
应用可以接收哪些隐式 Intent,请在清单文件中使用 <intent-filter> 元素为每个应用组件声明一个或多个 Intent 过滤器。每个 Intent 过滤器均根据 Intent 的操作、数据和类别指定自身接受的Intent类型。 仅当隐式 Intent 可以通过 Intent过滤器之一传递时,系统才会将该 Intent 传递给应用组件。
在 name 属性中,声明接受的 Intent 操作。该值必须是操作的文本字符串值,而不是类常量。
例如:
java 代码中启动的Intent的Action
Intent sendIntent = new Intent("String_action");
Androidmanfest.xml 中过滤标签如下:

使用一个或多个指定数据 URI 各个方面(scheme、host、port、path 等)和 MIME 类型的属性,声明接受的数据类型。
在 name 属性中,声明接受的 Intent 类别。该值必须是操作的文本字符串值,而不是类常量。
例如:

禁止其他应用通过Intent 掉起自己组件
android:exported="false"
应用主要入口点Action
<action android:name="android.intent.action.MAIN" />
Launcher 图标入口Action
以下两个元素必须配对使用,Activity 才会显示在应用启动器中。

注意:
CATEGORY_LAUNCHER 类别指示此 Activity 的图标应放入系统的应用启动器。 如果<activity>元素未使用 icon 指定图标,则系统将使用<application>元素中的图标
4. PendingIntent 使用方法
PendingIntent 对象是Intent对象的包装器。PendingIntent 的主要目的是授权外部应用使用包含的 Intent,就像是它从您应用本身的进程中执行的一样。
主要应用于以下场景
通知
NotificationManager应用小部件
AppWidget定时任务
AlarmManager
PendingIntent 使用注意事项:
- 1.PendingIntent.getActivity()
适用于启动 Activity 的 Intent。
- 2.PendingIntent.getService()
适用于启动Service的 Intent。
- 3.PendingIntent.getBroadcast()
适用于启动 BroadcastReceiver 的 Intent。
5. Intent 7 大属性
- 1 . Component Name(目标组件的全类、组件名称)
setComponent(),
getComponent(),
setClass() ,
setClassName()
- 2 . Action (intent 将执行的动作)
setAction()
getAction()
- 3 . Data (用于向Action 属性提供操作数据)
URI对象scheme://host:port/path (协议头,主机,端口,路径)
- 4 . Type 分类
指定Data所指定的Uri对应的MIME类型,不指定会根据数据自动推导
- 5 . Category 类别
为Action 提供额外的附件类别信息,可以有多个Category,但必须有一个default。
<!-- 默认分类必须加上,否则会报错 -->
<category android:name="android.intent.category.DEFAULT"/>
- 6 . Extra 数据载体
通过键值对进行数据存储,用于多个Action之间提供数据交换.
- 7 . Flags 标记
标记组件如何启动,以及启动后如何对待 FALG_ACTIVITY_SINGLE_TOP
FALG_ACTIVITY_CLEAR_TOP等等)
6. 使用ADB调试 Intent
- 语法
adb shell am start -a <ACTION> -t <MIME_TYPE> -d <DATA> \
-e <EXTRA_NAME> <EXTRA_VALUE> -n <ACTIVITY>
- eg :
adb shell am start -a android.intent.action.DIAL \
-d tel:555-5555 -n org.example.MyApp/.MyActivity
7.Intent 常用方法使用总结
由于总结内容较多,已经另开文章讲述。

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

Intent 使用详解的更多相关文章
- Android零基础入门第80节:Intent 属性详解(下)
上一期学习了Intent的前三个属性,本期接着学习其余四个属性,以及Android系统常用内置组件的启动. 四.Data和Type属性 Data属性通常用于向Action属性提供操作的数据.Data属 ...
- Intent知识详解
Intent知识详解 一.什么是Intent 贴一个官方解释: An intent is an abstract description of an operation to be performed ...
- Android中Intent组件详解
Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件.Intent本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙 ...
- Android总结篇——Intent机制详解及示例总结
最近在进行android开发过程中,在将 Intent传递给调用的组件并完成组件的调用时遇到点困难,并且之前对Intent的学习也是一知半解,最近特意为此拿出一些时间,对Intent部分进行 ...
- Intent属性详解三 data、type和extra
1 Data 执行时要操作的数据 在目标<data/>标签中包含了以下几种子元素,他们定义了url的匹配规则: android:scheme 匹配url中的前缀,除了“http”.“ht ...
- Intent属性详解二 Action、Category
先看效果图: 1.Action:该activity可以执行的动作 该标识用来说明这个activity可以执行哪些动作,所以当隐式intent传递过来action时,如果跟这里<intent-fi ...
- Intent属性详解一 component属性
先看效果图 概述 在介绍Component之前,我们首先来了解ComponentName这个类:ComponentName与Intent同位于android.content包下,我们从Android官 ...
- [转]android Intent机制详解
转自:http://blog.csdn.net/t12x3456/article/details/7688154 1.什么是Intent Intent是一种运行时绑定(run-time binding ...
- Intent Android 详解
Intents and Intent Filters 三种应用程序基本组件 activity, service和broadcast receiver——是使用称为intent的消息来激活的. Inte ...
- Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释
本文大部分参考自 http://blog.csdn.net/mayingcai1987/article/details/6200909 ,对原文中的讲解FLAG_NEW_TASK地方加了一些自己的观点 ...
随机推荐
- Python开发【第四篇】: 三大器和内置函数
内容概要 函数名 闭包 迭代器 生成器 推导式与表达式 内置函数 装饰器 初识递归 1.函数名 函数名的运用: 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. 01. 函数名的 ...
- 机器学习经典算法之Apriori
一. 搞懂关联规则中的几个概念 关联规则这个概念,最早是由 Agrawal 等人在 1993 年提出的.在 1994 年 Agrawal 等人又提出了基于关联规则的 Apriori 算法,至今 Apr ...
- 谈谈NOSQL
从MongoDB引到NOSQL 要讲MongoDB之前,首先要提到一个概念NOSQL(NoSQL = Not Only SQL ) 很大一部分数据是由关系型数据库管理系统(RDMBSs)来处理的,关系 ...
- Delphi7中Unicode,ANSI,UTF编码问题
注解: ANSI 'American Standard Code for Information Interchange' 美国信息互换标准代码 ANSI的'Ascii'编码 Unicode ...
- JDK源码阅读(三):ArraryList源码解析
今天来看一下ArrayList的源码 目录 介绍 继承结构 属性 构造方法 add方法 remove方法 修改方法 获取元素 size()方法 isEmpty方法 clear方法 循环数组 1.介绍 ...
- orm的操作
ORM的对应关系 类 —— > 表 对象 ——> 记录(数据行) 属性 ——> 字段 class Book(model.Model): title=models.Char ...
- 西门子 S7-300 PLC 从入门到精通的100个经典问题
1:使用CPU 315F和ET 200S时应如何避免出现“通讯故障”消息? 使用CPU S7 315F, ET 200S以及故障安全DI/DO模块,那么您将调用OB35 的故障安全程序.而且,您已 ...
- java字符串的替换replace、replaceAll、replaceFirst的区别
看代码: String s = "my.test.txt"; System.out.println(s.replace(".", "#")) ...
- Jquery serialize()提交多个表单数据
ajax提交多个表单数据: 先把不同的表单分别用serialize()函数,然后把序列化后的数据用+拼接提交给后台,具体例子如下 var data1 = $('#form1).serialize(); ...
- [原创]自动化部署K8S(v1.10.11)集群
标准运维实现自动化部署K8S集群主要分两步,第一步是部署gse-agent,拱第二步执行部署. 第一步:部署gse-agent.如下: 第二步:部署k8s集群.主要通过作业平台分为5小步执 ...