Android菜鸟认知——Intent和Intent filter初印象

涉及到的一些名词的解释: Uri


intent是啥子,intent的干嘛用的,intent经常使用方式是什么,intent的使用有什么需要注意的,intent是如何匹配相应的组件去实现的。

intent如何启动一个东西的例子实在是太多了,这里不对intent的具体应用做列举。只是和基础不是很好的朋友一起认识一下 intent和 intent filter


Intent 是 组件之间传递信息的纽带,它使用的范围就是启动3大组件,activity,Service,broadcast。


intent启动方式为两种:显示,隐式。显示启动,你知道你想启动的是啥,让他直接去接管你想要做的事。隐式,你表达了一个行为的意图,然后让能做的去做。

简单的介绍一下显示启动,下面会详细介绍隐式启动,因为隐式启动涉及到 关于intent匹配的问题。

显示启动,简单粗暴的告诉系统我要启动的组件,通过的方式是:设置CompinentName 这是个什么鬼东西:它有两个字段,一个是packagename ,一个是class

也就是说 可以指定 哪个应用包的哪个组件启动。我们可以通过这个方法启动别的app的组件。setClassName setClass  还有一些方式都是大家常用的就不多列举了。

Intent过滤器

说到隐式启动必然先要知道 intent的过滤器。在Manifest文件中进行定义,作用就是筛选intent,也就是说他告诉系统,这个组件只接收满足我这些条件的intent。这里有三个参数作为 筛选的参考: <action> <data> <category> 分别是 (我能干啥),(我需要使用的家伙事是啥,是啥类型的),(我能接收人是啥样的)。

来个例子

  	<action android:name="android.intent.action.SEND"/>(我能发)
        <category android:name="android.intent.category.DEFAULT"/>(我啥样的人都接收(默认的))
        <data android:mimeType="text/plain"/>(我用的家伙事是文字)

	<action android:name="android.intent.action.SEND"/>(我能发)
        <action android:name="android.intent.action.SEND_MULTIPLE"/>(我能群发)
        <category android:name="android.intent.category.DEFAULT"/>(谁让我干 我都干)
        <data android:mimeType="application/vnd.google.panorama360+jpg"/>(我要的家伙事是 图片类型的,音频类型的)
        <data android:mimeType="image/*"/>
        <data android:mimeType="video/*"/>

 	<action android:name="android.intent.action.MAIN" />(我是关键)
        <category android:name="android.intent.category.LAUNCHER" />(我只接收能让我启动的人)

这里详细介绍一下 <data>  它由两部分组成 一个是uri  一个是MIME  

若要同时设置 URI 和 MIME 类型,请勿调用 setData() 和 setType(),因为它们会互相抵消彼此的值。请始终使用 setDataAndType() 同时设置 URI 和 MIME 类型。

声明这些之后就可以接收隐式Intent了

构建Intent

我们仔细研究一下 一个Intent 对象由哪些成分组成 :ComponentName action data extra category flags(这个意图的运行模式 例如activity的 singletop)

Comontent : 目的组件, 显示启动的象征,直接决定了要启动的组件

action :行为意图 ,和过滤器中的 <action>进行匹配,用户可以自己在Manifest自定义action

data : uri 我们可以理解为数据的地址

category : 动作的类型,默认是default 配合action 帮助系统选定适合的组件。自定义类别:用户可以在Manifest文件中自定义category

MIME : 数据的mime类型,也可以理解为文件格式

extras: 额外信息,不是用于匹配Intent过滤器的,只是负载了一些额外的信息。

Flags : 例如希望 activity的运行模式是 singletop


隐式启动当中我们需要注意的是 我们要先去了解系统中是否有满足我们Intent的 过滤器

这里需要执行这样的判断

	if (sendIntent.resolveActivity(getPackageManager()) != null) {
    		startActivity(chooser);
	}


待定Intent

这个是干嘛用的? 常用于三种情况: 使用桌面小工具时需要执行的Intent, 希望在未来的某个时间执行Intent 。

PindingIntent 的创建方法  getActivity getService getBroadcast 






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值