android intent action 自定义,android Intent匹配,自定义action data category

官网对Intent的action、data和category的说明

public Intent setAction (String action)

Added in API level 1

Set the general action to be performed.

Parameters

actionAn action name, such as ACTION_VIEW. Application-specific actions should be prefixed with the vendor's package name.

Returns

Returns the same Intent object, for chaining multiple calls into a single statement.

public Intent setData (Uri data)

Added in API level 1

Set the data this intent is operating on. This method automatically clears any type that was previously set by setType(String) or setTypeAndNormalize(String).

Note: scheme matching in the Android framework is case-sensitive, unlike the formal RFC. As a result, you should always write your Uri with a lower case scheme, or use normalizeScheme() or setDataAndNormalize(Uri) to ensure that the scheme is converted to lower case.

Parameters

dataThe Uri of the data this intent is now targeting.

Returns

Returns the same Intent object, for chaining multiple calls into a single statement.

public Intent addCategory (String category)

Added in API level 1

Add a new category to the intent. Categories provide additional detail about the action the intent performs. When resolving an intent, only activities that provide all of the requested categories will be used.

Parameters

categoryThe desired category. This can be either one of the predefined Intent categories, or a custom category in your own namespace.

Returns

Returns the same Intent object, for chaining multiple calls into a single statement.

可以看出action, data, category都是可以自定义的。

Only three aspects of an Intent object are consulted when the object is tested against an intent filter:

action

data (both URI and data type)

category

The extras and flags play no part in resolving which component receives an intent.

系统根据IntentFilter决定哪个元件可以接收哪个Intent,

Intent是否匹配的判定只跟action,data和category有关。

自定义action的官方命名规范:

You can also define your own action strings for activating the components in your application. Those you invent should include the application package as a prefix — for example: "com.example.project.SHOW_COLOR".

category需要注意的地方

In principle, therefore, an Intent object with no categories should always pass this test, regardless of what's in the filter.

That's mostly true. However, with one exception, Android treats all implicit intents passed to startActivity()

as if they contained at least one category: "android.intent.category.DEFAULT" (the CATEGORY_DEFAULT constant).

Therefore, activities that are willing to receive implicit intents must include "android.intent.category.DEFAULT"

in their intent filters. (Filters with "android.intent.action.MAIN" and "android.intent.category.LAUNCHER" settings are the exception.

They mark activities that begin new tasks and that are represented on the launcher screen.

They can include "android.intent.category.DEFAULT" in the list of categories, but don't need to.)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值