我们都知道启动一个新的活动无非就两种方式 显式启动和隐式启动
显式启动:直接指定要跳转的Activity类名,不用过滤,效率高,适用于同一个应用中的不同Activity跳转
隐式启动:需要过滤,相对耗时,但可以找到所有之匹配的应用,适用于不同应用之间的Activity跳转
使用隐式跳转我们都知道可以打开应用之外的活动 比如常用的打开浏览器等
现在我们说的是一些鲜为人知的功能:隐式启动会找到所匹配到的应用,并提示用户选择打开方式

就类似于此的功能,是不是跟平时的有点不一样呢!
下面我们就来一步一步了解一下吧。
首先,先贴出代码:
当我们创建一个TestActivity的时候 进行如下配置
<activity android:name=".test.HttpActivity">
<intent-filter tools:ignore="AppLinkUrlError">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="https"/>
</intent-filter>
</activity>
然后我们在跳转时跟往常一样
startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("https://www.baidu.com")));这样 我们想要的就完成了
大体来讲,达到隐式启动步骤:
- 1、配置action
- 2、配置DEFAULT的category
- 3、配置data达到指定路径过滤(可选)
- 4、调用隐式启动时可判定是否存在可匹配项
如果有多个组件被匹配成功,就会以对话框列表的方式让用户进行选择。
每个Intent中只能指定一个action,但却能指定多个category;类别越多,动作越具体,意图越明确
在Intent添加类别可以添加多个类别,那就要求被匹配的组件必须同时满足这多个类别,才能匹配成功。操作Activity的时候,如果没有类别,须加上默认类别
当Intent匹配成功的组件有多个时,显示优先级高的组件,如果优先级相同,显示列表让用户自己选择
优先级从-1000至1000,并且其中一个必须为负的才有效
注:系统默认的浏览器并没有做出优先级声明,其优先级默认为正数。
Intent七大属性:由以下各个组成部分:
- component(组件):目的组件
- action(动作):用来表现意图的行动
- category(类别):用来表现动作的类别
- data(数据):表示与动作要操纵的数据
- type(数据类型):对于data范例的描写
- extras(扩展信息):扩展信息
- Flags(标志位):期望这个意图的运行模式
来看看intent中data属性包括:
- android:scheme
用于指定数据的协议部分,如上例中的http部分- android:host
用于指定数据的主机名部分,如上例中的www.baidu.com部分- android:port
用于指定主机名和端口之后的部分,一般紧随在主机名之后- android:mimeType
用于指定可以处理的数据类型,允许使用通配符的方式进行指定
















