android intent-infliter 过滤验证

过滤分为四大类验证

<action>

<category>

<data>

<ssp>

0.四大组件可以申明多个intent-fliter标签。

1. Action验证是必选项,如果没有Action的话,验证是失败的。Action验证是或者的关系,即是满足一个就通过验证。

eg:

<intent -infliter >

<actionandroid:name="Action1"/>

<actionandroid:name="Action2"/>

<actionandroid:name="Action3"/>

</intent -infliter ><

action = "Action1"

通过验证

2.category是可选项,验证规则是在某个intent-fliter标签申明了多个标签的话,则请求验证的intent的所有category都必须是当前请求验证的intent-fliter标签category的子集。

<intent -infliter >

<category  android:name=" category 1"/>

<category  android:name=" category2"/>

<category  android:name=" category3"/>

</intent -infliter ><

eg2:

Intent intent  = new Intent();

intent .addCategory("category1");

intent .addCategory("category2");

通过验证

eg3:

Intent intent  = new Intent();

intent .addCategory("category1");

intent .addCategory("category2");

intent .addCategory("category4");

没有通过验证

3.data验证。data的格式 :    scheme://host:port/path

3.1:验证必须是从左到右开始逐个验证不允许跳跃验证。

eg:

3.2:scheme是必须要有的。

3.3:验证的属性

a                                            android:scheme=""

b                                            android:host=""

c                                             android:port=""

d                                            android:path=""

e                                            android:pathPattern=""

f                                             android:pathPrefix=""

g                                            android:mimeType=""

h                                            android:ssp=""                            4.4 plus

i                                              android:sspPattern=""           4.4 plus

j                                              android:sspPrefix=""               4.4 plus

对于a、b、c、d他们的关系是与的关系,只有全部满足才算通过。

对于d、e、f他们的关系是或的关系,通过任意一个都算通过。

对于uri(a、b、c、d、e、f)和mimeType的关系是与的关系。只有全部满足才算通过。记住如果请求验证的的Intent含有uri或者mimeType,而标签含有uri或mimeType那么请求验证是失败的。反之也失败的。

4. ssp 见https:/zybuluo.com/flyouting/note/18525

注1:path 是用于完整路径匹配. eg:  /index.jsp

注2:pathPattern是路径匹配模式有两种形式  "*" 、 ".*"

*代表的是*前的一个字符有0个或多个。 ab*c匹配  ac abc abbc abbbc

.*代表的是 0个或多个字符串。 ab*c匹配  abc  abec  abffc abuuuuc

注3:pathPrefix是用于路径前缀匹配.  /in  匹配   /in.jsp index.jsp  .....

注4:host也可以用通配符不过host只能包含一个*的通配符,而不能包含其他字符。

时间: 2024-11-05 19:28:44

android intent-infliter 过滤验证的相关文章

android Intent.setType() 过滤图片,返回所有的文件类型

我想在我的app中通过Intent从启动的应用程序中刚抓取图片 我尝试使用如下代码: Intent intent = new Intent("android.intent.action.GET_CONTENT"); intent.addCategory("android.intent.category.OPENABLE"); intent.setType("image/*"); 处理方法 id.os.Bundle; public class St

Android中Intent对象与Intent Filter过滤匹配过程详解

如果对Intent不是特别了解,可以参见博文<Android中Intent概述及使用>,该文对本文要使用的action.category以及data都进行了详细介绍. 本文内容有点长,希望大家可以耐心读完. 本文在描述组件在manifest中注册的Intent Filter过滤器时,统一用intent-filter表示. 概述 我们知道,Intent是分两种的:显式Intent和隐式Intent.如果一个Intent明确指定了要启动的组件的完整类名,那么这个Intent就是显式Intent,否

android.intent.action.MAIN 与 android.intent.category.LAUNCHER 的验证理解

第一种情况:有MAIN,无LAUNCHER,程序列表中无图标 原因:android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里 第二种情况:无MAIN,有LAUNCHER,程序列表中无图标 原因:android.intent.action.MAIN决定应用程序最先启动的Activity,如果没有Main,则不知启动哪个Activity,故也不会有图标出现 console里面两种情况显示一样: 下面看一个应用程序可以有两个Activity的情况 点击(此处)折

android客户端向服务器端验证登陆方法的实现1

遇到的问题:一个条件查询与多个条件查询,所用到的方式不一样 参考文档: http://www.oschina.net/question/1160609_133366    mybatis多条件查询的一个错误 解决方案如下: 利用序列号的方式解决多个参数的查询问题.对象与数据库关系的映射层. 层次结构如下: 首先定义model层里面的Userlist类,这是和我们后台mysql里面的表是一一对应的,然后定义UserlistMapper类,这个类主要是用来封装一些个方法,比如说增删改查等.其实现通过

android客户端向服务器端验证登陆方法的实现2

一.在上一篇文章中,我只是提到了其中一种方法来实现登陆 大家可以参见: http://www.apkbus.com/android-45004-1-1.html      android获取web服务器端session并验证登陆 http://blog.csdn.net/cainiao123hack/article/details/8255848   服务器端向Android客户端传值--登录实现 http://zhidao.baidu.com/link?url=8g9EWhyUkUgUr1dh

Android Intent 教程

原文:Android: Intents Tutorial 作者:Darryl Bayliss 译者:kmyhy 人不会漫无目的地瞎逛,他们所做的大部分事情--比如看电视.购物.编写下一个杀手级 app -- 都带有特定的目的或者意图,即 intent. Android 也是同样的.在一个 app 干某件事情之前,它需要知道这件事情的目的或 intent,才能正确地完成整件事情. 这说明人和 Android 并无不同. 在本文,你将利用 Intent 去创建一个模因软件(一种用于恶搞的图片制作软件

Android Activity intent-flilter过滤机制

在Android中一个应用(APP1)如果要想调用另一应用的(APP2)的某一个Activity(Activity2),就需要在给Intent设置的参数能够通过Activiy2 在清单文件中声明的<intent-filter>属性验证,才能成功调用到Activity.<intent-filter> 标签中可以使用的验证有:Action验证.Category验证.Data验证,其中Action验证是必须声明的. Action 验证: 一个Activity可以声明多个Action,在验

android intent 跳转

一.不需要返回值的跳转 Intent intent=new Intent(); intent.setClass(目前的acitivy.this, 目标activity.class); startActivity(intent); 二.需要返回值的跳转 Intent intent=new Intent(); intent.setClass(目前的acitivy.this, 目标activity.class); startActivity(intent); startActivityForResul

android:android Intent and IntentFilter

文章来自:http://blog.csdn.net/intbird 如果说是将一个activity有其他应用打开,或者是在webView中调用我们自己的activity,那么最好就是使用intentfilter来过滤我们需要的activity; 说明什么是uri参数 Java Code: final Uri uri = Uri.parse("intbird://com.intbird.soft/testing/tested?name='Test'"); TextView textVie