Android中Intent的隐式启动和显示启动Activity

一、显示调用Intent

Intent intent=new Intent(this,SecondActivity.class);
startActivity(intent);

二、隐式启动Intent

Intent intent=new Intent("com.xu.mytest");
startActivity(intent);

    
        
        
    

三、Activity 中 Intent Filter 的匹配过程 :

Android中Intent的隐式启动和显示启动Activity_第1张图片
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri data=Uri.parse("http://www.baidu.com");
intent.setData(data);                
startActivity(intent); 
Android中Intent的隐式启动和显示启动Activity_第2张图片

隐式启动会找到所匹配到的应用,并提示用户选择打开方式

如果有多个组件被匹配成功,就会以对话框列表的方式让用户进行选择。
每个Intent中只能指定一个action,但却能指定多个category;类别越多,动作越具体,意图越明确
在Intent添加类别可以添加多个类别,那就要求被匹配的组件必须同时满足这多个类别,才能匹配成功。操作Activity的时候,如果没有类别,须加上默认类别
当Intent匹配成功的组件有多个时,显示优先级高的组件,如果优先级相同,显示列表让用户自己选择
优先级从-1000至1000,并且其中一个必须为负的才有效
注:系统默认的浏览器并没有做出优先级声明,其优先级默认为正数。

显式启动:直接指定要跳转的Activity类名,不用过滤,效率高,适用于同一个应用中的不同Activity跳转
隐式启动:需要过滤,相对耗时,但可以找到所有之匹配的应用。适用于不同应用之间的Activity跳转。



Intent七大属性:由以下各个组成部分:

  • component(组件):目的组件
  • action(动作):用来表现意图的行动
  • category(类别):用来表现动作的类别
  • data(数据):表示与动作要操纵的数据
  • type(数据类型):对于data范例的描写
  • extras(扩展信息):扩展信息
  • Flags(标志位):期望这个意图的运行模式

附:更多隐式Intent的用法举例

来看看intent中data属性包括:

  1. android:scheme
    用于指定数据的协议部分,如上例中的http部分
  2. android:host
    用于指定数据的主机名部分,如上例中的www.baidu.com部分
  3. android:port
    用于指定主机名和端口之后的部分,一般紧随在主机名之后
  4. android:mimeType
    用于指定可以处理的数据类型,允许使用通配符的方式进行指定

如:传递手机拨号事件

Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);

    
        
        
        
    

你可能感兴趣的:(Android中Intent的隐式启动和显示启动Activity)