Android Intent全面解析:启动Activity与BroadcastReceiver
需积分: 50 108 浏览量
更新于2024-09-15
1
收藏 54KB DOC 举报
"这篇文章主要介绍了Intent在Android系统中的多种使用方法,包括从BroadcastReceiver启动Activity、指定Intent的action、type以及隐式启动等。"
在Android开发中,Intent是一个非常关键的组件,它用于在应用程序的不同组件之间传递信息,如启动Activity、启动Service或者发送Broadcast。以下是关于Intent的一些常用方法和应用场景:
1. 从BroadcastReceiver启动Activity
当你需要在BroadcastReceiver接收到广播后启动一个新的Activity时,需要确保设置`Intent.FLAG_ACTIVITY_NEW_TASK`标志。这是因为BroadcastReceiver通常运行在后台进程中,而启动Activity需要一个任务栈。例如:
```java
public class MyReceiver extends BroadcastReceiver {
public static final String ACTION = "acc";
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, Receivered.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
```
2. 指定action和type
当你想启动一个特定的Activity,可以通过指定Intent的action和type来实现。比如,这里使用`Intent.ACTION_VIEW`和特定的MIME类型`"vnd.android.cursor.item/sim-contact"`来启动SIM联系人查看器:
```java
Intent importIntent = new Intent(Intent.ACTION_VIEW);
importIntent.setType("vnd.android.cursor.item/sim-contact");
importIntent.setClassName("com.android.phone", "com.android.phone.SimContacts");
```
3. 指定action、data和type
对于隐式启动Activity,除了action,我们还可以提供URI数据(data)和MIME类型(type)。例如,通过URI `content://simcontacts/simPeople/(id)` 来启动SIM编辑器:
```java
Uri uri = Uri.parse("content://simcontacts/simPeople/" + id);
Intent intent = new Intent("android.intent.action.SIMEDIT", uri);
startActivity(intent);
```
这时,系统会根据data中的URI和type去匹配AndroidManifest.xml中声明的Activity。
4. AndroidManifest.xml中的过滤器(filter设定)
在接收隐式Intent时,需要在AndroidManifest.xml中设置对应的Intent过滤器,以便系统能够找到合适的Activity来处理Intent。例如:
```xml
<activity android:name=".MyActivity">
<intent-filter>
<action android:name="android.intent.action.SIMEDIT" />
<data android:scheme="content" android:pathPattern="simcontacts/simPeople/*" />
<data android:mimeType="vnd.android.cursor.item/sim-contact" />
</intent-filter>
</activity>
```
这样,当Intent的action是`"android.intent.action.SIMEDIT"`,data匹配`"content://simcontacts/simPeople/*"`,并且type为`"vnd.android.cursor.item/sim-contact"`时,系统就会选择这个Activity进行启动。
理解并熟练运用这些Intent的用法,对于构建Android应用至关重要,因为它允许开发者在应用组件之间灵活地传递数据和触发操作。无论是启动Activity、Service还是BroadcastReceiver,Intent都是连接这些组件的关键桥梁。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-07-10 上传
2012-10-30 上传
2012-12-03 上传
2016-06-03 上传
2013-05-15 上传
2014-07-28 上传
JPCI
- 粉丝: 0
- 资源: 2
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器