Android中Intent-Filter的匹配规则是什么

发布时间:2020-12-14 15:19:32 作者:Leah
来源:亿速云 阅读:236

今天就跟大家聊聊有关Android中Intent-Filter的匹配规则是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

活动的启动方式有两种:一种是显示启动,或者很简单,指定一个活动的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的结构

前面讲到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

action是最简单也是最常用的。

Category

这个参数平时用得比较少,一般在一些比较特殊的情况才会用到

Data

data是三个中最复杂的一个,顾名思义,这个参数就是用来传递数据的。data不同于前面两个,他由两部分组成:Uri+mimeType.
我们先来看看data的组成:

<data android:scheme=""
     android:host=""
     android:port=""
     android:path=""
     android:pathPattern=""
     android:pathPrefix=""
     android:mimeType=""/>

data一共由7个参数组成,一起来看看分别是什么意思:

讲完他的结构后,有的读者可能会发现,这个data不就是一个地址+文件类型吗?是的,uri本身就是地址的意思。我们平时什么时候用到data呢?举个例子,我们调用相机拍照并存储到指定的文件夹,那么怎么让相机知道地址呢?就是data了,我们通过intent启动相机,并把地址放在data传输过去。这里的uri还涉及到安卓版本的影响有所不用,有兴趣的读者可以去了解一下。

那么,data的匹配规则是怎么样的呢?
和action是一样的,要求intent中必须要有data,而且和intentFilter中的一个相匹配就可以匹配成功。

设置intentFilter

看完了上面知道intentFilter中的三个参数怎么去匹配了,那怎么给活动设置intentFilter,怎么给intent传输参数知道吗?这个比较简单也简单讲一下:
给活动设置intentFilter比较简单,只要在AndroidManifest中设置就可以了,看示例代码:

<activity android:name=".MainActivity">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>

给intent设置参数也不难,一个一个来看:

看完上述内容,你们对Android中Intent-Filter的匹配规则是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. nginx location匹配及rewrite规则
  2. iptables time 时间匹配规则

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android intent-filter roi

上一篇:python中自定义异常如何解决

下一篇:pandas数据分析库中的dt接口如何在Python中使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》