Intent是各个组件之间信息沟通的桥梁,它用于Android各组件之间的通信,主要完成下
列工作:
标明本次通信请求从哪里来、到哪里去、要怎么走。
发起方携带本次通信需要的数据内容,接收方从收到的意图中解析数据。
发起方若想判断接收方的处理结果,意图就要负责让接收方传回应答的数据内容。
Intent的组成部分
显式Intent
直接指定来源活动与目标活动,属于精确匹配。它有三种构建方式:
在Intent的构造函数中指定。
调用意图对象的setClass方法指定。
调用意图对象的setComponent方法指定。
// 1.在Intent的构造两数中指定
// Intent intent = new Intent(this,TextViewActivity.class);
// 2.调用意图对象的setClass方法指定
// Intent intent = new Intent();
// intent.setClass(this, TextViewActivity.class);
// 3.调用意图对象的setComponent方法指定
// Intent intent = new Intent();
// ComponentName component = new ComponentName(this, ActFinishActivity.class);
// intent.setComponent(component);
隐式Intent
没有明确指定要跳转的目标活动,只给出一个动作字符串让系统自动匹配,属于模糊匹配
通常App不希望向外部暴露活动名称,只给出一个事先定义好的标记串,这样大家约定俗成、按图索骥就好,隐式Intent便起到了标记过滤作用。这个动作名称标记串,可以是自己定义的动作,也可以是已有的系统动作。常见系统动作的取值说明。
拨打电话
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);
Uri uri = Uri.parse("tel:123456");
intent.setData(uri);
startActivity(intent);
发送短信
Intent intent2 = new Intent();
intent2.setAction(Intent.ACTION_SENDTO);
Uri uri2 = Uri.parse("smsto:123456");
intent2.setData(uri2);
startActivity(intent2);