初来学习Intent,基本用法

Intent用法

Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据

显示Intent

Intent有多个构造函数的重载,其中一个是Intent(Context packageContext, Class cls),参数packageContext代表启动活动的上下文,参数cls想要启动的目标活动。方法startActivity(Intent intent),启动这个意图。

隐式Intent

隐式Intent并不明确指明我们要启动哪一个活动,而是指定一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,并帮助我们找出合适的活动去启动。

  • 我们在activity标签下配置intent-filter标签,可以指定当前活动能够响应的actioncategory

      
          
              
              
              
          
          >
      
    

只有actioncategory中的内容同时能够匹配上Intent中指定的action和category时,这个活动才能够响应该Intent,每个Intent中只能指定一个action,但却能指定多个category,调用Intent中的addCategory()方法来添加一个category

隐式Intent的高级用法

  • 使用隐式Intent,我们不仅可以启动自己程序内的活动,还可以启动其他程序中的活动,这使得Android多个应用程序之间的功能共享成为了可能

调用系统的浏览器

  • 系统内置的动作actionIntent.ACTION_VIEW,其常量值为android.intent.action.VIEW

      //创建一个意图对象,指定其action为系统内置浏览器的action
      Intent intent = new Intent(Intent.ACTION_VIEW);
      //指定当前action正在操作的数据
      intent.setData(Uri.parse("http://www.baidu.com"));
      //启动活动
      startActivity(intent);
    
  • setData()方法: 此方法主要接收一个Uri对象,主要用于指定当前Intent正在操作的数据,而这些数据通常都是以字符串的形势传入到Uri.parse()方法中解析出来的

调用系统的拨号器

  • 系统内置动作actionIntent.ACTION_DIAL

      //调用系统的内置动作Intent.ACTION_DIAL
      Intent intent = new Intent(Intent.ACTION_DIAL);
      //拨打电话使用的tel协议
      intent.setData(Uri.parse("tel:10086"));
    

点击按钮,出现如下界面:


data标签,响应什么类型的数据

setData()方法相对应,在标签中再配置一个标签,用于更精确的指定当前活动能够指定什么类型的数据。

  • android:scheme 用于指定数据的协议部分,例:http
  • android:host 用于指定数据的主机名部分,例:www.baidu.com
  • android:port 用于指定数据的端口部分,一般紧随在主机名之后
  • android:path 用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容

只有标签中指定的内容和Intent中携带的Data完全一致时,当前活动才能够响应该Intent

设置data标签,可以响应http请求的活动

这个项目的名字叫做ActivityTest

    
        
            
            
            
                
            
        
    

当发送一个http请求时,就会出现:


你可能感兴趣的:(初来学习Intent,基本用法)