android intent隐身启动和Intent过滤器
2012-03-02 13:57
204 查看
显式Intent定义:对于明确指出了目标组件名称的Intent,我们称之为显式Intent。显式Intent直接用组件的名称定义目标组件,这种方式很直接。但是由于开发人员往往并不清楚别的应用程序的组件名称,因此,显式Intent更多用于在应用程序内部传递消息。比如在某应用程序内,一个Activity启动一个Service。
隐式Intent定义:对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。它不会用组件名称定义需要激活的目标组件,它更广泛地用于在不同应用程序之间传递消息.由于没有明确的目标组件名称,所以必须由Android系统帮助应用程序寻找与Intent请求意图最匹配的组件。
隐式启动Intent:
Android系统寻找与Intent请求意图最匹配的组件具体的选择方法是:
Android将Intent的请求内容和一个叫做IntentFilter的过滤器比较,IntentFilter中包含系统中所有可能的待选组件.如果IntentFilter中某一组件匹配隐式Intent请求的内容,那么Android就选择该组件作为该隐式Intent的目标组件。
Android如何知道应用程序能够处理某种类型的Intent请求呢?这需要应用程序在Android-Manifest.xml中声明自己所含组件的过滤器(即可以匹配哪些Intent请求)。
一个没有声明Intent-Filter的组件只能响应指明自己名字的显式Intent请求,而无法响应隐式Intent请求。
一个声明了IntentFilter的组件既可以响应显式Intent请求,也可以响应隐式Intent请求。在通过和 IntentFilter比较来解析隐式Intent请求时,Android将以下三个因素作为选择的参考标准Action \Data\ Category,而Extra和Flag在解析收到Intent时是并不起作用的
Intent过滤器:
应用程序的组件为了告诉Android自己能响应、处理哪些隐式Intent请求,可以声明一个甚至多个Intent Filter。每个Intent Filter描述该组件所能响应Intent请求——组件希望接收什么类型的请求行为,什么类型的请求数据。
如何为组件声明自己的Intent Filter? 常见的方法是在AndroidManifest.xml文件中用属性<Intent-Filter>描述组件的Intent Filter。
隐式Intent和Intent Filter进行比较时的三要素是Intent的动作、数据以及类别。实际上,一个隐式Intent请求要能够传递给目标组件,必要通过这三个方面的检查。如果任何一方面不匹配,Android都不会将该隐式Intent传递给目标组件。接下来我们讲解这三方面检查的具体规则。
View Code
效果图:
隐式Intent定义:对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。它不会用组件名称定义需要激活的目标组件,它更广泛地用于在不同应用程序之间传递消息.由于没有明确的目标组件名称,所以必须由Android系统帮助应用程序寻找与Intent请求意图最匹配的组件。
隐式启动Intent:
Android系统寻找与Intent请求意图最匹配的组件具体的选择方法是:
Android将Intent的请求内容和一个叫做IntentFilter的过滤器比较,IntentFilter中包含系统中所有可能的待选组件.如果IntentFilter中某一组件匹配隐式Intent请求的内容,那么Android就选择该组件作为该隐式Intent的目标组件。
Android如何知道应用程序能够处理某种类型的Intent请求呢?这需要应用程序在Android-Manifest.xml中声明自己所含组件的过滤器(即可以匹配哪些Intent请求)。
一个没有声明Intent-Filter的组件只能响应指明自己名字的显式Intent请求,而无法响应隐式Intent请求。
一个声明了IntentFilter的组件既可以响应显式Intent请求,也可以响应隐式Intent请求。在通过和 IntentFilter比较来解析隐式Intent请求时,Android将以下三个因素作为选择的参考标准Action \Data\ Category,而Extra和Flag在解析收到Intent时是并不起作用的
Intent过滤器:
应用程序的组件为了告诉Android自己能响应、处理哪些隐式Intent请求,可以声明一个甚至多个Intent Filter。每个Intent Filter描述该组件所能响应Intent请求——组件希望接收什么类型的请求行为,什么类型的请求数据。
如何为组件声明自己的Intent Filter? 常见的方法是在AndroidManifest.xml文件中用属性<Intent-Filter>描述组件的Intent Filter。
隐式Intent和Intent Filter进行比较时的三要素是Intent的动作、数据以及类别。实际上,一个隐式Intent请求要能够传递给目标组件,必要通过这三个方面的检查。如果任何一方面不匹配,Android都不会将该隐式Intent传递给目标组件。接下来我们讲解这三方面检查的具体规则。
View Code
package cn.shaoyangjiang.com; import java.util.Set; import android.app.Activity; import android.os.Bundle; import android.widget.EditText; public class Second extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); EditText editText1 =(EditText)findViewById(R.id.et1); //获取该Activity对应的Intent的Action属性 String actionValue = getIntent().getAction(); //显示Action属性 editText1.setText("Action: "+actionValue); EditText editText2 = (EditText)findViewById(R.id.et2); //获取该Activity对应的Intent的Category属性 Set<String> cate= getIntent().getCategories(); //显示Action属性 editText2.setText("Categoties: "+cate); } }
效果图:
相关文章推荐
- Android task和back stack详解四:intent中定义启动模式
- Android——Intent和Intent过滤器
- android 通过点击上下文菜单采用intent启动activity
- Android 设置开放隐性启动Intent
- android当activity启动模式设置成singleTask如何获取intent
- Android利用Intent启动和关闭Activity
- android之隐示意图--在一个 <intent-filter>意图中用两个category启动这个activity
- 【Android】16.3 带Intent过滤器的Services
- 隐式启动Activity,Intent filter必须添加android.intent.category.DEFAULT
- 关于在android程序执行过程中使用Intent启动另一个活动后,同个方法未执行的代码是否会继续执行。
- Android - 使用Intent来启动Activity
- Android 开发中 Intent 和 Intent 过滤器学习笔记
- Android 从小白到大拿之路——Intent+Action启动网页
- [转]Android 进程间通信 Intent机制 隐式启动Activity
- Android 5.0 不再允许使用隐式Intent来启动Service
- Android四种启动模式及newIntent()
- Android中Activity的四种启动模式以及用Intent启动Activity的模式
- Android笔记(五)利用Intent启动活动
- Android使用Intent启动其他非系统应用程序的方法
- Android Intents和Intent过滤器(二)