Intent主要是解决Android应用的各项组件之间的通讯。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给被调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
intent的七大属性:ComponentName、Action、Category、Data、Type、Extra以及Flag。
示例(核心代码):
隐式:
(不指定组件名,通过匹配,选出满足属性的组件)
在AndroidMainfest.xml中,被调用的Activity要有一个带有并且包含的Activity,设定它能处理的Intent,并且category设为"android.intent.category.DEFAULT"。action的name是一个字符串,可以自定义(一般命名方式为包名+Action名)。
<intent-filter>
<action android:name="com.example.activitytest.ACTION.START"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
Intent intent = new Intent("com.example.activitytest.ACTION.START");
intent.addCategory("android.intent.category.DEFAULT");
startActivity(intent);
显式:
(指定了组件名,每次只能启动一个组件)
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
打开网页:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
打电话:
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:18582231373"));
startActivity(intent);