一.Intent是什么:
翻译过来:意图,简单来说,Intent是系统各组件之间进行数据传递的数据负载者。Android程序中各组件之间交互的一种方式,它不仅可以可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
启动一个Activity:Context.startActivity(Intent intent);
启动一个Service:Context.startService(Intent service);
绑定一个Service:Context.bindService(Intent service, ServiceConnection conn, int flags);
发送一个Broadcast:Context.sendBroadcast(Intent intent);
二.Intent属性:
1.action :要执行的动作
2..data:即执行动作要操作的数据
3.extras :传递到目标的附加信息
3.category:要执行动作的目标所具有的特质或行为归类
4.type:要执行动作的目标Activity所能处理的MIME数据类型
5.component:目标组件的包或类名称
6.flag: 标记
1.action :对于有如下声明的Activity可以跳转到指定Activity
<activity android:name=".TestActivity">
<intent-filter>
<action android:name="com.intent.action.Test"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<intent-filter>
<action android:name="com.intent.action.Test"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
TestActivity在其<intent-filter>中声明了<action>,即目标action,如果我们需要做一个跳转的动作,就需要在Intent中指定目标的action,如下:
public void gotoTestActivity(View view) {
Intent intent = new Intent("com.intent.action.Test");
startActivity(intent);
}
Intent intent = new Intent("com.intent.action.Test");
startActivity(intent);
}
当我们为Intent指定相应的action,然后调用startActivity方法后,系统会根据action跳转到对应的Activity。
2.Extras向下一个Activity传递数据(使用Bundle和Intent.putExtras)
Intent it = new Intent(Activity.Main.this, Activity2.class); Bundle bundle=new Bundle(); bundle.putString("name", "This is from MainActivity!"); it.putExtras(bundle); // it.putExtra(“test”, "数据”); startActivity(it); // startActivityForResult(it,REQUEST_CODE);
3.component(组件),
指定Intent的的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。
4.Category (种类)
Category是一个字符串。其中包含了应该处理当前Intent的组件类型的附加信息,在Intent对象中可以增加任意多个种类描述
示列:返回系统Home桌面
Intent intent = new Intent();
intent.setAction(intent.ACTION_MAIN);
intent.addCategory(intent.CATEGORY_HOME);
startActivity(intent)