时间:2021-05-21
我们都知道,活动的启动方式有两种:一种是显示启动,或者很简单,指定一个活动的class就可以了;另外一种就是隐式启动,这种要指定action,category,data信息,例如我们在启动系统相机的时候。看一下代码:
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); startActivityForResult(intent,1);其中的”android.media.action.IMAGE_CAPTURE”就是相机的action,这样就可以启动相机了。
隐式启动我们在平时也用的比较少,对于自己应用中的Activity都是直接显示启动了。那什么时候用到隐式启动呢?一般是在启动别的应用的activity的时候,例如上面讲到的相机。
上面讲到的action,category,data就是intent-filer,也就是过滤器,筛选要启动的activity。
intentFiler有什么用?就像给自己上个标签。例 如,你给自己上个标签是大学生,那么,当说学生出来,欸那么就匹配到你了。这个就是intentfiler的作用。用于筛选匹配。
那么这三个action,category,data究竟是什么?他们的具体匹配规则又是什么样的?上面讲到intentFiler是用于启动别的应用,有哪些常用的intentfiler可以使用?接下来我们就来看看。
前面讲到intentFilter包含三个:action,category,data,让我看一下代码熟悉一下:
<intent-filter> <action android:name="huan"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter>另外包括我们最熟悉的:
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>这三个分别表示不同的意义。你想要启动什么样的activity就通过设置这些属性来启动到对应的activity。当我们自己设置intentFiler的时候也要注意他的意义性,虽然很多可以随便设置,但是就像变量名称一样,不要随便起。
action是最简单也是最常用的。
这个参数平时用得比较少,一般在一些比较特殊的情况才会用到
data是三个中最复杂的一个,顾名思义,这个参数就是用来传递数据的。data不同于前面两个,他由两部分组成:Uri+mimeType.
我们先来看看data的组成:
data一共由7个参数组成,一起来看看分别是什么意思:
讲完他的结构后,有的读者可能会发现,这个data不就是一个地址+文件类型吗?是的,uri本身就是地址的意思。我们平时什么时候用到data呢?举个例子,我们调用相机拍照并存储到指定的文件夹,那么怎么让相机知道地址呢?就是data了,我们通过intent启动相机,并把地址放在data传输过去。这里的uri还涉及到安卓版本的影响有所不用,有兴趣的读者可以去了解一下。
那么,data的匹配规则是怎么样的呢?
和action是一样的,要求intent中必须要有data,而且和intentFilter中的一个相匹配就可以匹配成功。
看完了上面知道intentFilter中的三个参数怎么去匹配了,那怎么给活动设置intentFilter,怎么给intent传输参数知道吗?这个比较简单也简单讲一下:
给活动设置intentFilter比较简单,只要在AndroidManifest中设置就可以了,看示例代码:
给intent设置参数也不难,一个一个来看:
上面讲到intentFilter主要是用来启动别的应用的,例如相机,电话,那么有什么是比较常用的呢?具体可以查看这篇博客android 常用URI 值得记住。不懂得也可以百度或者评论区留言。
我们上面讲到intentFilter可以用来筛选要启动的activity,同样对于service和broadcast也是一样,也同样可以给他们设置intentFilter来隐式启动对应的组件。而平时用的最多还是隐式启动活动,特别是在调用别的应用的活动的时候。要掌握一些常见的调用,这也是很重要的。
同时intentFilter的匹配规则也是很重要,熟记才不会在自己设置intentFilter的时候出错。
其中还有很多细节没有讲清楚,有疑问的读者可以评论区留言。
以上就是Android Intent-Filer匹配规则解析的详细内容,更多关于Android Intent-Filer匹配规则的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
相关文章Android4.0无法接收开机广播的问题在配置文件AndroidManifest.xml中向系统注册receiver,子节点intent-filter
在自己应用的AndroidManifest.xml某个activity配置不同类型的intent-filter,这里添加的是图片,也可以添加其它类型复制代码代码
IntentFilter的匹配规则IntentFilter的使用假如我们要隐式启动一个Activity我们需要成功匹配activity中的任意一个intent-
本文介绍Android中Intent的各种常见作用。1Intent.ACTION_MAINString:android.intent.action.MAIN标识
Android中的Intent是一个非常重要的类,如果对Intent不是特别了解,可以参见《详解Android中Intent的使用方法》。如果对IntentFi