安卓读书笔记——《第一行代码》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;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容