Enjoy yourself,and don't care about others' thinking!
----TiGERTiAN
BlogJava
首页
新随笔
联系
聚合
管理
随笔-348 评论-598 文章-0 trackbacks-0
Android的Intent和IntentFilter应用说明一例
很多人对文档中的Intent和IntentFilter不理解是什么意思,我这里举例解释下。
Intent字面意思就是目标,目的。通俗一点,需要达成某些目标,则需要提供一些动作,这些目标的分类,以及达成这些目标所需要的一些数据等等。Android中的Intent通过Action,Category和data等属性进行了相应的描述,我们想做某些事情(达成某些目标),就需要填写这些参数的部分或全部,这样Android才会帮助我们自动的去进行某些操作。
IntentFilter是配合Intent而生的,你有目标行动或者结果,那么那些行动和结果就会有他完成的特定要求,这些要求就是IntentFilter,可以理解为Intent和IntentFilter是相对应的。
<
activity
android:name
=".TestService"
android:label
="@string/app_name"
>
<
intent-filter
>
<
action
android:name
="android.intent.action.MAIN"
/>
<
category
android:name
="android.intent.category.LAUNCHER"
/>
<
action
android:name
="android.intent.action.STORE_REQUEST"
></
action
>
<
category
android:name
="android.intent.category.ALTERNATIVE"
/>
<
category
android:name
="android.intent.category.SELECTED_ALTERNATIVE"
/>
</
intent-filter
>
<
intent-filter
>
<
action
android:name
="android.intent.action.TIGERTIAN"
></
action
>
<
category
android:name
="android.intent.category.DEFAULT"
></
category
>
<
data
android:scheme
="x-id"
></
data
>
</
intent-filter
>
<
intent-filter
>
<
action
android:name
="android.intent.action.EDIT"
></
action
>
<
category
android:name
="android.intent.category.DEFAULT"
></
category
>
<
category
android:name
="android.intent.category.BROWSABLE"
></
category
>
</
intent-filter
>
</
activity
>
上面的Activity有三个Filter,第一个是给Android系统用的,表示这个Activity可以显示在桌面上(Launcher中)。同时Alternative表明,这个Activity可以
变成OptionMenu,供其他Activity直接调用。
后面两个Filter就是我自定义的了,第二个Filter可以在其他Activity中用如下方法直接调用:
Uri uri
=
Uri.parse(
"
x-id://www.google.com/getDetails?id=123
"
);
Intent in
=
new
Intent();
in.setAction(
"
android.intent.action.TIGERTIAN
"
);
in.addCategory(Intent.CATEGORY_DEFAULT);
in.setData(uri);
//
in.setClassName("com.tigertian.service", "com.tigertian.service.TestService");
TestActivity.
this
.startActivity(in);
在Filter配置中CATEGORY_DEFAULT是不可缺少的,想调用这个Service,可以不指定Class,但其他条件必须匹配(CATEGORY_DEFAULT可以不设置,Android默认会自动加上),通过Action,category和data就可以调用相应的Activity了,这是Android帮你做的,当然如果系统中存在多个匹配这些条件的Activity或者Service,Android根据优先级进行调用。
第三个调用方式如下:
Uri uri
=
Uri.parse(
"
x-id://www.google.com/getDetails?id=123
"
);
Intent in
=
new
Intent();
in.setAction(Intent.ACTION_EDIT);
in.addCategory(Intent.CATEGORY_BROWSABLE);
//
in.setData(uri);
//
in.setComponent(new ComponentName("com.tigertian.service", "com.tigertian.service.TestService"));
TestActivity.
this
.startActivity(in);
看到没有?可以不指定CATEGORY_DEFAULT,Android自动帮你添加。就是这么简单。
---------------------------------------------------------
专注移动开发
Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2010-02-03 18:01
TiGERTiAN
阅读(37695)
评论(11)
编辑
收藏
所属分类:
Java
、
Android
评论:
#
re: Android的Intent和IntentFilter应用说明一例 2010-09-16 17:30 |
讲的什么东西!!
IntentFilter是配合Intent而生的,你有目标行动或者结果,那么那些行动和结果就会有他完成的特定要求,这些要求就是IntentFilter,可以理解为Intent和IntentFilter是相对应的。
后面的列子也看不懂!
回复
更多评论
#
re: Android的Intent和IntentFilter应用说明一例 2010-09-16 17:32 |
TiGERTiAN
@ 讲的什么东西!!
你一点都不学习,当然看不懂了。
回复
更多评论
#
re: Android的Intent和IntentFilter应用说明一例 2010-09-16 17:56 |
讲的什么东西!!
//in.setClassName("com.tigertian.service", "com.tigertian.service.TestService");
这个东西到底是给我们的提示还是没有用的东西呀,
回复
更多评论
#
re: Android的Intent和IntentFilter应用说明一例 2010-09-17 14:26 |
讲的什么东西!!
你这个代码调不通
回复
更多评论
#
re: Android的Intent和IntentFilter应用说明一例 2011-03-21 14:55 |
gangbener
你好,我尝试了之后代码运行均无误,但是我想要更加明确的运行结果,因为按照上面的代码运行后只能在DDMS中查看可以正常运行,但是并不知道在IntentFilter中设置的属性是否起作用了。我是在一个Activity中实现的,即,我在一个名为“intentExample”的Activity的intentExample Menifest文件中写入了上面三个intentfilter,并在该Activity中调用intentExample.this.startActivity(in)。
回复
更多评论
#
re: Android的Intent和IntentFilter应用说明一例 2013-02-26 14:30 |
zcmain
精简干练 顶。。
回复
更多评论
#
re: Android的Intent和IntentFilter应用说明一例[未登录] 2013-05-08 23:01 |
wang
垃圾
回复
更多评论
#
re: Android的Intent和IntentFilter应用说明一例 2013-08-01 15:27 |
魏滋珑
受益了 谢谢LZ 讲的这么详细
回复
更多评论
#
re: Android的Intent和IntentFilter应用说明一例 2013-08-23 16:51 |
awander
简明!通透!
多谢了!
回复
更多评论
#
re: Android的Intent和IntentFilter应用说明一例[未登录] 2013-10-29 16:27 |
lee
@TiGERTiAN
这是从哪里抄的什么东西的,乱七八糟的。
回复
更多评论
#
re: Android的Intent和IntentFilter应用说明一例[未登录]
2014-11-12 14:24 |
Arlen
大家不明白的就是IntentFilter,而你并没有举什么例子,看这评论,大家都看不懂的。。。不过还是多谢分享。
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
OSGi and Hadoop and Node.js
javacc工具小记
MyEclipse 6.5新序列号,到2013年
OtaNotifier.java
Java中无符号整数
C#的BinaryWriter和Java的DataInputStream之间的数据相互转换
在Mac下面下载Android源代码
[转]Java通过XML Schema校验XML
[转]JAVA上加密算法的实现用例
LG GW880(Ophone)开启ADB调试模式
专注移动开发--Windows Mobile, Android, iPhone, J2ME, BlackBerry, Symbian, Windows Phone
慢慢混,慢慢学
<
2014年11月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(40)
给我留言
查看公开留言
查看私人留言
随笔分类
(402)
Ajax(4)
Android(58)
BlackBerry(8)
C/C++(3)
Design Patterns(6)
Discuz!NT(1)
DotNet(26)
Feeling(61)
Flex(4)
Grails(2)
Hibernate(1)
iPhone(5)
J2ME(11)
Java(99)
JSF(26)
Linux(18)
MapXtreme(9)
Objective c(1)
Oracle(6)
Other technique(20)
Perl/Python(1)
Roller (10)
Symbian
VB/ASP(7)
WebWork(3)
Windows Mobile(10)
WindowsPhone(2)
随笔档案
(306)
2017年5月 (1)
2016年8月 (1)
2015年11月 (1)
2015年2月 (1)
2015年1月 (1)
2013年12月 (1)
2013年5月 (1)
2013年4月 (1)
2012年9月 (1)
2012年7月 (1)
2012年6月 (1)
2012年5月 (2)
2012年4月 (1)
2012年2月 (2)
2012年1月 (1)
2011年11月 (2)
2011年10月 (1)
2011年9月 (1)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年3月 (3)
2011年2月 (4)
2011年1月 (15)
2010年12月 (1)
2010年11月 (2)
2010年10月 (6)
2010年9月 (12)
2010年8月 (3)
2010年7月 (2)
2010年6月 (6)
2010年5月 (14)
2010年4月 (7)
2010年3月 (16)
2010年2月 (10)
2010年1月 (14)
2009年12月 (12)
2009年11月 (5)
2009年10月 (3)
2009年9月 (2)
2009年8月 (3)
2009年6月 (1)
2009年4月 (2)
2009年3月 (2)
2009年1月 (3)
2008年12月 (3)
2008年11月 (20)
2008年10月 (17)
2008年9月 (3)
2008年4月 (1)
2008年3月 (2)
2008年2月 (8)
2008年1月 (1)
2007年11月 (2)
2007年10月 (13)
2007年9月 (3)
2007年7月 (4)
2007年6月 (2)
2007年5月 (12)
2007年4月 (15)
2007年3月 (6)
2007年2月 (2)
2007年1月 (1)
2006年7月 (2)
2006年4月 (1)
2006年1月 (1)
2005年11月 (1)
2005年8月 (1)
2005年7月 (9)
相册
我正在读的书
我的好友们
JavaBy
有心就有翼 有梦就会飞--MC
搜索
积分与排名
积分 - 807463
排名 - 50
最新评论
1. re: Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用[未登录]
哈哈~
--a
2. re: onInterceptTouchEvent和onTouchEvent调用时序
@米其林的微笑
在你的子view重写ontouchevent方法就行
--kxt
3. re: Android弹出拨号界面和拨打电话实现
这找不到call是怎么回事?现在有别的方法实现这个功能吗?
--firetomato
4. re: Android弹出拨号界面和拨打电话实现
请我dial和call方法有什么区别么?
--jaime
5. re: Android文字跑马灯控件(文本自动滚动控件)
如何让滚动的速度快一点啊??
--学鸟
阅读排行榜
1. onInterceptTouchEvent和onTouchEvent调用时序(38686)
2. Android的Intent和IntentFilter应用说明一例(37695)
3. Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用(34314)
4. Android中短信拦截解决方案(31072)
5. Android中ContentProvider和ContentResolver使用入门(21418)
评论排行榜
1. 【JSF】Richfaces复选框树(Checkbox tree)的权限分配的解决方案(69)
2. JSF中动态生成HtmlMessage控件出错的解决办法(38)
3. hibernate中at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)异常的解决方法(27)
4. 这两天用Flex写了一个多媒体播放器(19)
5. Android文字跑马灯控件(文本自动滚动控件)(17)