前言
Intent 的中文翻译就是“意图”的意思,它是 Android 程序中传输数据的核心对象。在 Android 官方文档中,对 Intent 的定义是执行某操作的一个抽象描述。
一个 Intent 对象实质上是一组被捆绑的信息,它可以是对 Intent 有兴趣的组件信息(如要执行的动作和要作用的数据),也可以是 Android 系统感兴趣的信息(如处理 Intent 组件的分类信息和如何启动目标活动的指令等)。Intent 对象主要包含 Component name、Action、Category、Data、Extras、Flags 6种属性。
属性 | 作用 |
---|---|
Component name | 指定为处理 Intent 对象的组件名称 |
Action | Intent 要完成的一个动作 |
Category | 用来对执行动作的类别进行描述 |
Data | 向 Action 提供要操作的数据 |
Extras | 向 Intent 组件添加附加信息 |
Flags | 指示 Android 程序如何去启动一个 Activity |
Component name
Component name 属性用来设置 Intent 对象的组件名称,它的属性值是一个 ComponentName 对象,要创建一个 ComponentName 需要指定包名和类名——这就可以唯一的确定一个组件类,这样应用程序就可以根据给定的组件类去启动特定的组件。
Action(动作)
Action 属性用来指定将要执行的动作。它很大程度上决定了 Intent 如何构建.
Action 与 Data、Extras 属性。它们的关系就像一个方法名决定了参数和返回值一样,正是由于这个原因,所以应该尽可能明确指明动作,并紧紧关联到其他 Intent 字段。
Data(数据)
Data 属性通常用于向 Action 提供要操作的数据。它可以是一个 URI 对象,通常情况下包含数据的 URI 和 MIME 类型,不同的 Action 有不同的数据规格,其采用 “数据类型:数据” 的格式。
Action 与 Data 的数据关联
操作类型 | Data 格式 |
---|---|
浏览网页 | http://网页地址 |
拨打电话 | tel:电话号码 |
发送短信 | smsto:短信接收号码 |
查找 SD 卡文件 | file:///sdcard/目录或文件 |
显示地图 | geo:坐标,坐标 |
联系人信息 | content://联系人信息 |
举例说明:Intent实现拨打电话、发送短信
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
ImageButton imageButton1 = (ImageButton) findViewById(R.id.phone);
ImageButton imageButton2 = (ImageButton) findViewById(R.id.yx);
//设置监听器对象
imageButton1.setOnClickListener(listener);
imageButton2.setOnClickListener(listener);
}
View.OnClickListener listen