安卓读书笔记——《第一行代码》160911

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;
    }

你可能感兴趣的:(安卓读书笔记——《第一行代码》160911)