Intent启动不同组件的方法
组件名称 | 方法名称 |
Activity | startActivity()、startActivityForResult() |
Service | startService()、bindService() |
Broadcasts | sendBroadcast()、sendOrderedBroadcast()、sendStickyBroadcast() |
Intent由以下几个部分组成: 动作(Action)、数据(Data)、分类(Category)、类型(Type)、组件(Component)、拓展信息(Extra)。通过这些可以启动其他组件并携带信息。
Intent寻找组件的方法有2种:第一、通过组件名称直接指定;第二、通过IntentFilter过滤指定
Component属性:
组件名通过setComponent()、setClass()、setClassName()设置,通过getComponent()获取。
Action属性:指Intent要完成的动作,是一个字符串常量,如ACTION_CALL(打电话)、ACTION_EDIT(编辑数据)
通过setAction来设置属性。getAction获取。我们还可以自定义Action来使用。
需要在清单文件AndroidManifest.xml中指定activity配置intent-filter和category
如:
<activity android:name=".MyActivity">
<intent-filter>
<action android:name="com.example.test.MY_ACTION"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
调用内置的Action(号码联系人)
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("vnd.android.cursor.item/phone");
startActivity(intent);
Intent的Data属性:执行动作的URI和MIME类型,不同的Action有不同的Data数据指定。通常和Action配合使用。
Intent的Category(类别)属性:是执行Action的一个附加信息
如:返回home界面:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
Intent的Extras属性:添加一些组件的附加信息
Bundle类
—————————————————————————————————————————————————————————————————————————————
Action常量 | 对应字符串 | 简单说明 |
---|---|---|
ACTION_MAIN | android.intent.action.MAIN | 应用程序入口 |
ACTION_VIEW | android.intent.action.VIEW | 显示指定数据 |
ACTION_ATTACH_DATA | android.intent.action.ATTACH_DATA | 指定某块数据将被附加到其他地方 |
ACTION_EDIT | android.intent.action.EDIT | 编辑指定数据 |
ACTION_PICK | android.intent.action.PICK | 从列表中选择某项并返回所选的数据 |
ACTION_CHOOSER | android.intent.action.CHOOSER | 显示一个Activity选择器 |
ACTION_GET_CONTENT | android.intent.action.GET_CONTENT | 让用户选择数据,并返回所选数据 |
ACTION_DIAL | android.intent.action.DIAL | 显示拨号面板 |
ACTION_CALL | android.intent.action.CALL | 直接向指定用户打电话 |
ACTION_SEND | android.intent.action.SEND | 向其他人发送数据 |
ACTION_SENDTO | android.intent.action.SENDTO | 向其他人发送消息 |
ACTION_ANSWER | android.intent.action.ANSWER | 应答电话 |
ACTION_INSERT | android.intent.action.INSERT | 插入数据 |
ACTION_DELETE | android.intent.action.DELETE | 删除数据 |
ACTION_RUN | android.intent.action.RUN | 运行数据 |
ACTION_SYNC | android.intent.action.SYNC | 执行数据同步 |
ACTION_PICK_ACTIVITY | android.intent.action.PICK_ACTIVITY | 用于选择Activity |
ACTION_SEARCH | android.intent.action.SEARCH | 执行搜索 |
ACTION_WEB_SEARCH | android.intent.action.WEB_SEARCH | 执行Web搜索 |
ACTION_BATTERY_LOW | android.intent.action.ACTION_BATTERY_LOW | 电量低 |
ACTION_MEDIA_BUTTON | android.intent.action.ACTION_MEDIA_BUTTON | 按下媒体按钮 |
ACTION_PACKAGE_ADDED | android.intent.action.ACTION_PACKAGE_ADDED | 添加包 |
ACTION_PACKAGE_REMOVED | android.intent.action.ACTION_PACKAGE_REMOVED | 删除包 |
ACTION_FACTORY_TEST | android.intent.action.FACTORY_TEST | 工厂测试的入口点 |
ACTION_BOOT_COMPLETED | android.intent.action.BOOT_COMPLETED | 系统启动完成 |
ACTION_TIME_CHANGED | android.intent.action.ACTION_TIME_CHANGED | 时间改变 |
ACITON_DATE_CHANGED | android.intent.action.ACTION_DATE_CHANGED | 日期改变 |
ACTION_TIMEZONE_CHANGED | android.intent.action.ACTION_TIMEZONE_CHANGED | 时区改变 |
ACTION_MEDIA_EJECT | android.intent.action.MEDIA_EJECT | 用户想要拔出扩展介质后发送广播 |
ACTION_MEDIA_UNMOUNTED | android.intent.action.MEDIA_UNMOUNTED | 扩展介质存在,还没有被挂载后发送广播 |
ACTION_MEDIA_MOUNTED | android.intent.action.MEDIA_MOUNTED | 扩展介质被插入,而且已经被挂载后发送广播 |
ACTION_MEDIA_REMOVED | android.intent.action.MEDIA_REMOVED | 扩展介质被移除后发送广播 |
ACTION_MEDIA_SCREEN_OFF | android.intent.action.MEDIA_SCREEN_OFF | 关闭屏幕后发送广播 |
ACTION_MEDIA_SCREEN_ON | android.intent.action.MEDIA_SCREEN_ON | 打开屏幕后发送广播 |
- 其中用于启动Activity的标准Category及对应的字符串如下表所示:
Category常量 | 对应字符串 | 简单说明 |
---|---|---|
CATEGORY_DEFAULT | android.intent.category.DEFAULT | 默认的Category |
CATEGORY_BROWSABLE | android.intent.category.BROWSABLE | 指定该Activity能被浏览器安全调用 |
CATEGORY_TAB | android.intent.category.TAB | 指定该Activity作为TabActivity的Tab页 |
CATEGORY_LAUNCHER | android.intent.category.LAUNCHER | Activity显示顶级程序列表中 |
CATEGORY_INFO | android.intent.category.INFO | 用于提供包信息 |
CATEGORY_HOME | android.intent.category.HOME | 设置该Activity随系统启动而运行 |
CATEGORY_PREFERENCE | android.intent.category.PREFERENCE | 该Activity是参数面板 |
CATEGORY_TEST | android.intent.category.TEST | 该Activity是一个测试 |
CATEGORY_CAR_DOCK | android.intent.category.CAR_DOCK | 指定手机被插入汽车底座(硬件)时运行该Activity |
CATEGORY_DESK_DOCK | android.intent.category.DESK_DOCK | 指定手机被插入桌面底座(硬件)时运行该Activity |
CATEGORY_CAR_MODE | android.intent.category.CAR_MODE | 设置该Activity可在车载环境下使用 |