1 Intent
intent 是Android程序中各组件之间进行交互的一种重要方式,它不仅可以致命当前组件想要执行的动作,还可以在不同组件之间传递数据,Intent一半可以被用于启动活动,启动服务,以及发送广播等。
Intent分为显示意图和隐式意图,
- 显示意图直接指定了要打开哪一个Activity(或者广播,服务等);
- 而隐式意图则是通过IntentFilter来过滤要打开Activity(或者广播,服务等),
IntentFilter中的参数包括 action category data
- action 指明当前活动可以相应的ACTION
- category 中包含了一些附加信息,如果不配置category的话,默认是DEFAULT
** 每个Intent中只可以指定一个action,但是可以指定多个category, - data标签中可以配置的属性有如下:
1) android:scheme: 用于指定数据的协议部分,如下面例子中的http部分
2)android:host: 用于指定数据的主机名部分,如下面例子中的www.baidu.com部分
3)android:port: 用于指定数据的端口部分,一半紧随在主机名后面
4)android:path: 用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容
5)android:mimeType: 用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
只有data标签中指定的内容和Intent中携带的Data内容完全一致时,当前活动才能够相应改Intent,不过一半在Data标签中都不会指定过多的内容,如下面示例中,其实只需要指定scheme为http,就可以相应所有的http协议的Intent了,(单纯指定scheme的demo没写出来)
2 使用隐式意图打开百度页面
下面的代码实现的效果是: 通过点击menu菜单中的add选项,就可以打开百度首页
@Override //处理menu条目的点击事件
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item_menu_add:
// 通过隐式意图开启百度首页
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
break;
case R.id.item_menu_delete:
//具体的逻辑代码
Toast.makeText(MainActivity.this, "delete条目被点击", Toast.LENGTH_SHORT).show();
break;
}
return true;
}