Android中的category大全

Api Level 3(SDK 1.5)和Api Level 4(SDK 1.6):

android.intent.category.ALTERNATIVE
android.intent.category.BROWSABLE
android.intent.category.DEFAULT
android.intent.category.DEVELOPMENT_PREFERENCE
android.intent.category.EMBED
android.intent.category.HOME
android.intent.category.INFO
android.intent.category.LAUNCHER
android.intent.category.MONKEY
android.intent.category.OPENABLE
android.intent.category.PREFERENCE
android.intent.category.SELECTED_ALTERNATIVE
android.intent.category.TAB

 Api Level 5(SDK 2.0)增加的:

android.intent.category.CAR_DOCK
android.intent.category.DESK_DOCK

Api Level 6和7没有变化。

 Api Level 8(SDK 2.2)增加的:

android.intent.category.CAR_MODE
 
### Android 中 `category` 属性的作用与使用方法 #### `category` 的作用 在 Android 应用开发中,`category` 是用于进一步描述和过滤 `Intent` 的一种机制。它通常与 `action` 配合使用,以帮助系统确定哪些 `Activity`、`Service` 或 `BroadcastReceiver` 可以响应特定的 `Intent` 请求。 `category` 的主要作用包括: - **限定 Intent 的使用场景**:通过添加不同的 `category`,可以指定某个 `Intent` 只在特定条件下被接收。例如,`android.intent.category.LAUNCHER` 表示该 `Activity` 可以作为应用的入口点。 - **支持多条件匹配**:一个 `IntentFilter` 可以包含多个 `category`,从而实现更精确的组件匹配。 - **确保默认行为**:在某些情况下,必须包含 `android.intent.category.DEFAULT` 才能保证组件能够接收隐式 `Intent`。 #### `category` 的使用方法 ##### 1. 在 `AndroidManifest.xml` 中声明 在 `AndroidManifest.xml` 文件中,可以通过 `<intent-filter>` 为组件(如 `Activity`)定义 `category`,例如: ```xml <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ``` 上述代码表示 `MainActivity` 是应用的启动界面,用户点击应用图标时将启动该 `Activity`。在这种情况下,不需要添加 `android.intent.category.DEFAULT`,因为系统已经默认将其包含在内 [^1]。 ##### 2. 添加默认 `category` 当使用隐式 `Intent` 启动组件时,如果未在 `Intent` 中显式指定 `category`,系统会自动为其添加 `android.intent.category.DEFAULT`。因此,在 `AndroidManifest.xml` 中定义的 `<intent-filter>` 必须包含该 `category`,否则组件将无法接收到该 `Intent`: ```xml <activity android:name=".SecondActivity"> <intent-filter> <action android:name="com.example.ACTION_CUSTOM" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> ``` ##### 3. 在代码中动态设置 在 Java/Kotlin 代码中,也可以通过 `Intent` 对象动态添加 `category`: ```java Intent intent = new Intent("com.example.ACTION_CUSTOM"); intent.addCategory("com.example.CATEGORY_CUSTOM"); startActivity(intent); ``` 对应的 `Activity` 必须在其 `<intent-filter>` 中声明相同的 `category` 才能接收到该 `Intent` [^2]。 ##### 4. 自定义 `category` 开发者可以定义自己的 `category`,建议使用包名作为前缀以避免冲突。例如: ```xml <category android:name="com.example.app.CATEGORY_FEATURED" /> ``` 这种方式适用于特定业务逻辑或模块化组件的筛选 。 ##### 5. 特殊用途的 `category` 一些系统定义的 `category` 用于特定用途,例如: - `android.intent.category.HOME`:表示该 `Activity` 是系统主屏幕界面。 - `android.intent.category.BROWSABLE`:允许 `Activity` 被浏览器调用以打开链接。 - `android.intent.category.PREFERENCE`:用于设置界面。 系统在解析这些 `category` 时会自动添加 `android.intent.category.DEFAULT` 以确保匹配 [^3]。 #### 注意事项 - 每个 `IntentFilter` 至少应包含一个 `category`,否则可能导致组件无法响应预期的 `Intent`。 - 在使用自定义 `category` 时,务必确保其唯一性,推荐使用包名前缀。 - `Intent` 中的 `category` 必须与 `AndroidManifest.xml` 中定义的完全匹配,否则组件将不会被调用。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值