文档章节

Intent Filter

okker
 okker
发布于 2014/01/16 10:16
字数 570
阅读 141
收藏 4

[参考官网]http://developer.android.com/guide/components/intents-filters.html#Resolution

Intent Filter 主要是使用在当前Context隐式启动Activity, Service和或者发送广播的时候,才有下面一系列的规则; 如使用显示启动这些规则就不需要考虑了

显示启动如下:

	Intent intent = new Intent(this, Compontent.class);
	startActivity(intent);
	或者sendBroadcast(intent);
	或者startService(intent);

Intent Filter

一个Activity或者service有很多个Intent-Filter, 只要通过一个Intent-filter匹配通过就可以了;

###action 测试

当创建Intent的时候只能指定一个action, 但是Intent-flter中可以列举很多action; 只要Intent中指定的action在Intent-filter中有一个;就可以通过;注意一点的是,在使用intent-filter的时候,当使用startActivity的时候必须 <category android:name="android.intent.category.DEFAULT" />,但是有个例外,就是action=MAIN, category=LAUNCHER; 但如果使用startService或者sendBroadcast就不需要了<category android:name="android.intent.category.DEFAULT" />这个配置了

如下

	Intent intent = new Intent();
	intent.setAction("a.b.c");
	startActivity(intent);

_

	<Activity>

	<intent-filter>
            <action android:name="a.b.c" />
            <action android:name="a.b.e" />
            <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
	<intent-filter>......
	</Activity>

category 测试

当创建Intent的时候,intent可以添加很多category; 当然Intent-flter也可以添加很多category;只要intent里面的category在intent-filter里面都有,就可以通过测试了

如下:

Intent intent = new Intent();
intent.setAction("a.b.b.b");
intent.addCategory("x.x.x");
intent.addCategory("y.y.y");
startActivity(intent);
<intent-filter>
            <action android:name="a.b.b.b" />
             <category android:name="android.intent.category.DEFAULT" />
             <category android:name="android.intent.category.BROWSABLE" />
             <category android:name="x.x.x" />
             <category android:name="y.y.y" />
</intent-filter>

必须要有;

data 测试

在Intent 这边只有一个, 在intent-filter可以列举多个,只要在intent-filter中有就可以通过,

	Intent intent = new Intent();
	intent.setAction("d.d.d");
	intent.setData(Uri.parse("a://b:90/a"));
	startActivity(intent);

_

	<intent-filter>
            <action android:name="d.d.d" />
             <category android:name="android.intent.category.DEFAULT" />
             <data android:scheme="a" android:host="b" android:port="90" android:path="/a"/>
             <data android:scheme="x" android:host="y" android:port="90" android:path="/z"/>
    </intent-filter>

注意当intent-filter中有<data> 过滤条件的时候, Intent里面必须设置一个data; 不然就会报错

以上几个例子都能够通过intent-filter;

intent-filter android:priority

参考(http://blog.csdn.net/liuhe688/article/details/6955668) 关于有序广播的使用

总结一下

  • Intent 只有设置一个Action, 一个Data, 多个category;
  • Intent-Filter 可以设置多个Action, 多个Data, 多个category;
  • Intent 里面的Action, Data, category的子集,
  • 当Intent-Filter有Data的时候,Intent必须要有Data
  • 当使用startActivity启动组件的时候, Intent-Filter必须要有<category android:name="android.intent.category.DEFAULT" />; 但是像sendBroadcast和startService就不需要了;

© 著作权归作者所有

okker
粉丝 8
博文 37
码字总数 18977
作品 0
东城
程序员
私信 提问
[Android] IntentFilter-->Action、Category属性详解

如果一个 Intent 请求在一片数据上执行一个动作, Android 如何知道哪个应用程序(和组件)能用来响应这个请求呢? Intent Filter就是 用来注册 Activity 、 Service 和 Broadcast Receiver...

枫兮兮
2014/02/27
0
0
一个app,多个入口图标,activity-alias实现多程序入口并显示指定view完成

需求总是一个接一个。 missed call需要一个单独的图标,点击进入,而missed call 本身在linhone activity中。 思路,使用activity alias。 当然,需要intent启动activity,也就需要filter 在...

eric_zhang
2012/03/01
0
6
android intent隐式调用之一个应用程序启动另一个应用程序

理解Intent的关键之一是理解清楚Intent的两种基本用法:一种是显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似;另一种是隐式的Intent,即Intent的发送者在构...

惊天
2011/06/30
0
7
Intent Filter匹配原则

应用程序的组件为了告诉Android自己能响应、处理哪些隐式Intent请求,可以声明一个甚至多个Intent Filter。每个Intent Filter描述该组件所能响应Intent请求的能力——组件希望接收什么类型的...

拉风的道长
2012/06/22
0
0
安卓入门笔记之Activity信使—intent

本文来自 Legend 的博客园博客,作者给了不错的小结,下回分解~ Android Intent详解 一、 Intent 作用 Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助...

twobeings
2014/04/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java agentlib参数分析

Java agentlib参数分析 再用intellij idea进行远程调试的时候,具体的配置选项如下: 标红的一行显示了远程调试需要添加的虚拟机参数。这个参数到底有什么意义? 我在命令行输入java命令,输...

Mr_Tea伯奕
34分钟前
1
0
四种软件架构演进史,程序员会一种就很牛了!

如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存、晋升空间。这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面。 ...

我最喜欢三大框架
38分钟前
3
0
如何做高可用的架构设计?

定义目标 既然我们的目标是做到高可用,那么我们就有必要先明确清楚高可用的含义,并通过拆解目标,让目标可以被量化。按照我的理解,可以将目标按照以下三条进行拆解: 1. 保持业务高稳定性...

别打我会飞
39分钟前
2
0
《错误的行为》的读后感优秀范文4000字

《错误的行为》的读后感优秀范文4000字: 第一章经济人和非理性人。本书中的经纪人是指经济学家经济模式中虚拟的理想人物,非理性人是指现实生活中实实在在存在的人,与经济人相对应的人。 ...

原创小博客
50分钟前
3
0
将二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向

作者图解释很好 https://blog.csdn.net/yanxiaolx/article/details/52073221

南桥北木
55分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部