Android
Intent
- 简介:Intent被称为意图,是安卓程序中的一种比较重要的组件间交户的方式,可以用于组件间的跳转,传递数据等。通常用作启动Activity,Service以及发送广播等。根据开启目标组件的方式,一般可以被分为显式意图和隐式意图。
显式意图
- 简介:显式意图可以直接通过名称来开启指定的目标组件
例如:
Intent intent = new Intent(this,Main2Activity.class);
startActivity(intent);
隐式意图
- 简介:隐式意图通过指定action和category等属性,让系统去根据这些信息找到符合的Activity。它不需要指定要启动的Activity,但需要指定要执行的操作,然后由系统去寻找绑定了这种操作的activity进行执行。
例如:
//隐式intent
Intent intent = new Intent();
intent.setActivity("cn.edu.jssvc.START_ACTIVITY");
startActivity(intent);
//配置文件中配置intent过滤器
<activity android:name = "cn.itcast.Main2Activity">
<intent-filter>
<action android:name = "cn.itcast.START_ACTIVITY"/>
<category android:name = "android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
intent过滤器
- 简介:在配置文件AndroidManifest.xml中为一个activity配置其intent过滤器,可以为隐式Intent的使用提供多层系统筛选。
action标签
- 配置action:在配置文件中为一个activity配置标签action设置其可以响应的Intent操作类型。
- intent.setAction():一个intent对象调用这个方法,将操作类型作为参数传递进去,可以为其设置操作类型,和上一条设置的标签对应。
- 可以设置的内容:这个设置的操作名称可以是自定义的文本字符串也可以是android.intent.action类中的常量(比如:com.example.activitytest.ACTION_START)
category标签
- 配置category:在配置文件中为一个activity配置标签category设置其可以接受的intent类别。一般默认设置为android.intent.category.DEFAULT
- intent.addCategory():一个intent对象调用该方法,将其所属类型作为参数传递进去,可以为其标记其intent的类型,以便系统去筛查(默认为android.intent.category.DEFAULT)
- 可以设置内容:一般是android.intent.category类中的常量,但也可以自定义,比如com.example.activitytest.MY_CATEGORY
data标签
- 配置data:这个是配置对携带特殊数据的intent响应,比如其中属性有:android:scheme,android:host,android,prot,android:path,android:mimeType。
- intent.setData():用这个方法可以让Intent对象携带一定的数据,对应上面配置的data标签检测。这些数据通常都是字符串通过Uri.parse()方法解析产生的。
- 可设置内容:如第一条所示,其有五条属性,由于我学的比较浅,所以这里只记录第一条,是指相应的数据协议部分,比如http就是指网页。
- 举个例子:
下面这个设置就是一个可以响应携带网址信息的intent的activity
<activity android:name = ".ThirdActivity">
<intent-filter>
<action android:name= "android.intent.action.VIEW"/>
<category android:name= "android.intent.category.DEFAULT"/>
<data android:scheme="http"/>
</intent-filter>
</activity>
//设置一个点击事件来激活一个写代网址信息的intent
button1.setOnClickListener(new View.OnclickListener(){
@Override
public void onClick(View v)
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
});