Intent简介
Intent 由动作、 效据, 分类, 类型、 组件和扩展信息等内容组成, 每个组成部分都由相应的国性进行表示,并提供设置和获取相应属性的方法,如下表
Intent可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。一般被用于启动活动、启动服务以及发送广播等
显式Intent
意图明显,用于启动明确的活动、服务等
//Intent(Context,目标class);
Intent intent = new Intent(BroadcastTest.this,BroadcastTest_1.class);
startActivity(intent);//启动活动
startService(intent);//启动服务
隐式Intent(启动当前程序内的活动)
意图模糊,不指定具体目标活动,通过指定一系列抽象的action和category信息,交由系统决定目标响应活动
使用说明:需要在当前活动的Intent和目标活动的<intent-filter>标签中配置对应action和category。当action和category都相互匹配时,目标活动才会响应。
action只能指定一个,category可以指定多个
>当前活动
//Intent intent = new Intent("action字符串")
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");//指定category标签
intent.addCategory("android.intent.category.DEFAULT")//默认category,这里可以不用添加
startActivity(intent);//用于启动目标活动
>目标响应活动<intent-filter>
<activity
android:name=".No2_Activity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.example.activitytest.MY_CATEGORY" />
</intent-filter>
</activity>
隐式Intent(启动其他程序内的活动)
通过指定一系列action常量,这些常量对应一系列行为,如下表
案例:调用系统浏览器
>当前活动
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
除了可以通过Uri.parse("http://www.baidu.com")指定响应http协议,更多的协议如下表
还可以在目标活动<intent-filter>标签中设置一个<data>标签设置(例如下内容用于设置http协议),来指定具体的响应数据类型
android:scheme 用于指定数据的协议部分,如上例中的http;
android:host 用于指定数据的主机名部分,如www.baidu.com;
android:port 用于指定数据的端口部分,一般在主机名之后;
android:path 用于指定主机名和端口后面的部分;
android:mimeType 用于指定可以处理的数据类型。