前言
安卓有两种方式启动Activity,一种是显示启动,另外一种是隐式启动。显示启动我们在项目中经常用到,大家也都比较熟悉。今天我们主要讲解一下隐式启动。隐式启动常用于不同应用之间的跳转(例如打开支付宝微信的支付页面),也可用于H5与native之间的交互。隐式启动就是action,category和data的匹配,我们先来说下匹配的规则,然后通过具体的例子去验证。
匹配规则
action的匹配规则
action在Intent-filter可以设置多条
intent中必须指定action否则匹配失败且intent中action最多只有一条
intent中的action和intent-filter中的action必须完全一样时(包括大小写)才算匹配成功
intent中的action只要与intent-filter其中的一条匹配成功即可
下面的两个intent都可以匹配上面MainActivity的action规则
Intent intent = new Intent("com.jrmf360.action.ENTER");
startActivity(intent);
Intent intent2 = new Intent("com.jrmf360.action.ENTER2");
startActivity(intent2);
category的匹配规则
category在intent-filter中可以有多条
category在intent中也可以有多条
intent中所有的category都可以在intent-filter中找到一样的(包括大小写)才算匹配成功
通过intent启动Activity的时候如果没有添加category会自动添加android.intent.category.DEFAULT,如果intent-filter中没有添加android.intent.category.DEFAULT则会匹配失败
data的匹配规则
在说data的匹配规则之前我们先来说说data的语法
android:host="string"
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string"/>
举个栗子
scheme://host:port/path|pathPrefix|pathPattern