Android组件--<intent-filter>

Intent的使用

  • Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent来执行动作和产生事件。使用Intent可以激活Android应用的三个核心组件:活动、服务和广播接收器。
  • Intent促进了组件之间的交互,这对于开发者非常重要,而且它还能做为消息的载体,去指导组件做出相应的行为,也就是说Intent可以携带数据,传递给Activity/Service/BroadcastReceiver。

启动Activity。Activity可以简单的理解为手机屏幕中的一个页面,你可以通过将Intent传入startActivity方法来启动一个Activity的实例,也就是一个页面,同时,Intent也可以携带数据,传递给新的Activity。如果想要获取新建的Activity执行结果,可以通过onActivityResult()方法去启动Activity。
启动Service。Service是一个不呈现交互画面的后台执行操作组件,可以通过将Intent穿入startService()方法来启动一个Service来启动服务。
传递广播BroadCast。广播是任何应用都可以接收到的消息,通过将Intent传递给 sendBroadcast()、sendOrderedBroadcast() 或 sendStickyBroadcast()方法,可以将广播传递接收方。

  • Intent可以划分成显式意图和隐式意图。

显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。

隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。

  • 在定义活动时,指定了一个intent-filter,Intent Filter(意图过滤器)其实就是用来匹配隐式Intent的,当一个意图对象被一个意图过滤器进行匹配测试时,只有三个方面会被参考到:动作、数据(URI以及数据类型)和类别。

<intent-filter>的测试

  • 动作

一条元素至少应该包含一个,否则任何Intent请求都不能和 该匹配。如果Intent请求的Action和中个某一 条匹配,那么该Intent就通过了这条的动作测试。如果Intent请求 或中没有说明具体的Action类型,那么会出现下面两种情况。
(1) 如果中没有包含任何Action类型,那么无论什么Intent请求都无法和这条匹配;
(2) 反之,如果Intent请求中没有设定Action类型,那么只要中包含有Action类型,这个 Intent请求就将顺利地通过的行为测试。

  • 数据
  • 类别

<action>,在这个属性中,声明该组件可以执行的操作。该值必须是关于操作的一个字符串,并不是类常量

			<intent-filter>
			/*用于显示用户的数据。比较通用,会根据用户的数据类型打开相应的Activity。
			比如 tel:13400010001打开拨号程序,http://www.g.cn则会打开浏览器等。*/
                <action android:name="android.intent.action.VIEW" />
			/*
			决定应用的入口Activity,也就是我们启动应用时首先显示哪一个Activity。 
			*/
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>

,使用一个或者多个数据URI(scheme、host、port、path等等)和数据的MIME类型来指定接受的数据类型
,声明接受的Intent类型

 <!--决定应用程序是否显示在程序列表里-->
  <category android:name="android.intent.category.LAUNCHER" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值