Android-Intent

2020-09-16  本文已影响0人  有腹肌的豌豆Z

Intent简介

Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。

Intent可分为隐式(implicitly)和显式(explicitly)两种:

显式 Intent
Intent intent = new Intent(MainActivit.this, NewActivity.class);
startActivity(intent );  
隐式 Intent
Intent intent = new Intent();
intent.setAction("com.wooyun.test");
startActivity(intent);

对于组件发送intent有不同的机制:

启动Activity
启动Service
启动Broadcast

Intent Filter匹配规则

action的匹配规则

比如我们在Manifest文件中为MyActivity定义了如下Intent Filter:

<intent-filter>
    <action android:name="android.intent.action.SEND"/>
    <action android:name="android.intent.action.SEND_TO"/>
</intent-filter>

那么只要Intent的action为“SEND”或“SEND_TO”,那么这个Intent在action方面就能和上面那个Activity匹配成功。比如我们的Intent定义如下:

Intent intent = new Intent("android.intent.action.SEND") ;
startActivity(intent);

Android系统预定义了许多action,这些action代表了一些常见的操作。
Intent.ACTION_VIEW
Intent.ACTION_DIAL
Intent.ACTION_SENDTO
Intent.ACTION_SEND
Intent.ACTION_WEB_SEARCH

data的匹配规则
<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern >]
看这个格式是不是很熟悉 又是 Scheme 
public Intent setData(Uri data) {
    mData = data;
    mType = null;
    return this;
}

public Intent setType(String type) {
    mData = null;
    mType = type;
    return this;
}
category的匹配规则
上一篇下一篇

猜你喜欢

热点阅读