Android Intent全面解析:启动Activity与BroadcastReceiver
需积分: 50 134 浏览量
更新于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都是连接这些组件的关键桥梁。
2017-02-17 上传
2024-07-23 上传
2024-07-22 上传
2022-07-10 上传
2012-10-30 上传
2012-12-03 上传
2016-06-03 上传
2013-05-15 上传
2012-03-09 上传
JPCI
- 粉丝: 0
- 资源: 2
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析