Intent的隐式启动匹配规则

Intent有隐式启动和显示启动两种方式:
显示启动就是指明启动的组件名称 XXX.class
Intent xianshiIntent = new Intent(this,Main5Activity.class);
startActivity(xianshiIntent);

隐式启动就是通过在AndroidMainfest.xml中配置Activity的Intent-filter来控制启动
intent-filter中有三种参数:action,category,data三种参数,我通过不同的组合来观察三种参数的匹配规则:
1 没有intent-filter :略 根本不会有反应
2 写了intent-filter但是内部不写参数 :我的编译器无法通过编译
3 写了intent-filter只写参数action

    
        
            
        
    

报错 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.pczhu.custom.action }

4 action和category参数都添加:

    
        
            

            

        
    

代码启动:

            Intent intent = new Intent();
            intent.setAction("com.pczhu.custom.action");
            //intent会为你默认加上android.intent.category.DEFAULT                
            startActivity(intent);

正确启动

5 action和category参数都添加但是category写成别的:匹配失败
6 action和category参数都添加,另外添加data:

        
            
            

            

            
            
       

代码启动

            Intent intent = new Intent();
            intent.setAction("com.pczhu.custom.action");
            //                不加 无法启动
            //                intent.setData(Uri.parse("abc://abc"));//无法启动
            //                intent.setData(Uri.parse("myscheme"));//无法启动
            //                intent.setData(Uri.parse("myscheme://"));//可以启动
            //                intent.setData(Uri.parse("myscheme://abc"));//可以启动
            startActivity(intent);  

7 action和data参数都添加 category不加:不能启动
8 多个Activity匹配弹出选择框如图

Intent的隐式启动匹配规则_第1张图片
device-2017-02-04-104227.png

你可能感兴趣的:(Intent的隐式启动匹配规则)