Intent filter 使用事项

使用事项

Intent().apply {
    setAction("")
    addCategory("")
    setDataAndType(Uri.parse(""),"")
}

不能直接使用 intent.categories.add(“”) 会报错,categories 没有初始化

注意进行非空检查判断

if (intent.resolveActivity(packageManager)!=null) {  
    startActivity(intent)  
}

匹配细节

action,category 都可以自定义String类型, category中Manifest中必须设置Default

action 匹配规则: Intent为子集,可以为空集,如果存在,必须匹配manifest

匹配规则: 非必要(如果有date匹配成功,也可以使用),Manifest多个action,Intent中只有一个,但只要匹配一个,则视为通过

常用action

Intent.ACTION_MAIN:APP程序的开始

Intent.ACTION_VIEW:用于显示用户的数据。

比较通用,会根据用户的数据类型打开相应的Activity。

比如 tel:13400010001 打开拨号程序, http://www.g.cn 则会打开浏览器等。

Intent.Action_CALL:呼叫指定的电话号码,数据格式为:tel:+phone number,如果没有数据,唤起拨号界面

category 匹配规则, Intent是Manifest的子集

Intent中设置的category 必须与Intent filter中相匹配

data 是否可以随意编写,必须匹配

data 表示该组件可以支持的数据格式与类型。

同样,一个过滤器也可以有多个 data:

<intent-filter>
    <data android:mimeType="video/mpeg" android:scheme="http" ... />
    <data android:mimeType="audio/mpeg" android:scheme="http" ... />
    ...
</intent-filter>

一个 data 由两部分组成:

  • mimeType
  • scheme

mimeType 指的是支持的数据类型与格式,常见的有:

  • text/plain
  • image/jpeg
  • video/*
  • audio/*

/ 号前面的是数据类型,后面是具体格式。

scheme 就是常见的 URI 格式:

<scheme>://<host>:<port>/<path>

具体部分介绍及重要性如下:

  • scheme: 协议类型
    • 最重要,协议类型决定了如何访问数据,比如是本地还是网络
  • host: 主机
    • 第二重要,主机地址决定了具体 ip
  • port:端口
    • 第三重要,一个主机可能有多个网卡端口,有了端口后才能访问到具体
  • path:具体路径
    • 最后一级,表示要访问的文件夹路径
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值