组件:Intent 和 intent-filter详细介绍

1、继承树
Intent
public class Intent
extends Object implements Parcelable, Cloneable

java.lang.Object
↳ android.content.Intent

2、Intent作用:
(1)APP内一个组件启动另外一个组件。
(2)一件组件启动另外一个APP的组件。
3、用途:
(1)、启动Activity:定义一个Intent,并将它传给 startActivity()或startActivityForResult(),从而
(2)、启动Service:定义一个Intent,并将它传给startService()或 bindService()方法,从而启动一个Service
(3)、发送广播:定义一个Intent对象,传递给sendBroadcast()方法或sendOrderedBroadcast()方法或sendStickyBroadcast()方法,给其他APP发广播。
4、分类
显示(explicit)Intent:明确包含要启动组件的完整类名(通过 Component name信息)(被指定组件不需设置Intent filter就可以被启动)
隐式(Implicit)Intent: 没有包含要启动的组件的完整类名。通地Action、Data、Category、Extras、Flags信息
HotkeyService代码中的Intent:
(1)查询APP启动组件名(隐式):
(2)启动APP(显式)
其实其他信息设置都没有用了

5、Intent信息组成:
(1)Component name 
通过Intent的setComponent()方法、setClass()方法、setClassName()方法或Intent的构造函数指定component name
<1>Intent(Context packageContext, Class<?> cls)
packageContext:为被启用组件对应包的Context
cls:被启用组件的类的Class类
例:Intent(abs.this,cdb.class)//一般用在同一个APP内,同一个APP才容易获取到其他主件Class类
abs与cdb两个组件在同一个APP内,abs组件启动cdb组件,
<2>Intent setClass (Context packageContext, Class<?> cls)//返会同一个Intent,为了同一个语句可以实现Intent方法的多次调用
Intent.setClase(abs.this,cdb.class)
<3>setComponent()
Intent i = new Intent();ComponentName comp = new ComponentName( "com.android.camera" , "com.android.camera.GalleryPicker" );i.setComponent(comp);

(2)action
用于隐式Intent调用,对应Intent Filter的action标签<action />
自定义的action最好使用APP包名作为该action 的前缀
常用Action
Intent.ACTION_VIEW: “android.intent.action.VIEW”:显示数据(图片、地址等)
Intent.ACTION_SEND: “android.intent.action. SEND”:分享
Intent.ACTION_MAIN: ”android.intent.action.MAIN“表示某个组件是APP的一个入口
(3)data
Intent中数据,包括 Uri对象和数据的MIME类型,对应Intent Filter的 data标签< data />
setDataAndType()同时设置在类型和数据
setData()//只设置数据,此时Type不能设置
setType()//只设置Type,时此Data不能设置
(4) Category  
对Intent组件信息的补充,是一个ArraySet容器,可以向里面添加任意数量的补充信息
通过addCategory()方法添加
常用:
CATEGORY_BROWSABLE 目标组件会允许自己通过一个链接被一个Web浏览器启动,该链接可能是一个图片链接或e-mail信息等。
CATEGORY_LAUNCHER 用于标识Activity是某个App的入口Activity。

(5)Extras
key-value键值对的形式来存储组件执行操作过程中需要的额外信息。
通过putExtra()方法来设置该属性。可以添加键值对和Bundle对象
(6)Flags
指示系统如何启动一个Activity

6、 intent-filter属性
定义在AndriodManifest.xml,定义Activity对Intent信息的过滤。
(1)android:priority表示优先级,值-1000~1000,数值越大,优先级越高
广播会先传给优先级高的组件,再传给优先级低的组件
(2)action属性
只有android:name这个属性,对应Intent中的Action
(3)Category属性
对应Intent中的Category属性,Category为CATEGORY_LAUNCHER


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值