什么是intent?
intent是androidAPK的四大组件之一,用于各个组件之间的转换。
intent组成:
action:指定intent要干什么
data:指定intent的操作目标
二者说明intent要对谁做什么操作
category:说明与action指定动作相关的附加信息
type:说明intent中的data是什么类型,一般data自己就可以搞定了
compoment:指定intent发给谁,如果intent中这项为空,则自动匹配,找出与intent最符合的
extras:其他数据,通常通过bundle加入intent
intent分类:
明显意图:component指定了。
模糊意图:component没指定,系统可以根据intent的其他内容(action/type/category)找到最合适的component,再把意图发给它/它们
action:
用于在startActivity(intent)中,启动activity。用的最多的是ACTION_VIEW、ACTION_MAIN
已经有的activity action:
action名 | action值 | action意义 |
ACTION_MAIN | android.intent.action.MAIN | 唤起APK的主活动 |
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 | 一个intent可能有好多合适的组件,给出一个选择界面,可以选择其中一个组件 |
ACTION_GET_CONTENT | android.intent.action.GET_CONTENT | 允许用户选择一条数据并返回它 |
ACTION_DIAL | android.intent.action.DIAL | 按data指定的数据拨号(只显示在拨号盘) |
ACTION_CALL | android.intent.action.CALL | 按data指定的数据拨号(拨通号码) |
ACTION_SEND | android.intent.action.SEND | 发送数据(不指定发给谁,发之前向用户询问是否发送) |
ACTION_SENDTO | android.intent.action.SENDTO | 发送数据(指定发给谁) |
ACTION_ANSWER | android.intent.action.ANSWER | 处理来电 |
ACTION_INSERT | android.intent.action.INSERT | 向给定container中插入空item |
ACTION_DELETE | android.intent.action.DELETE | 在container中删除给定数据 |
ACTION_RUN | android.intent.action.RUN | Run the data, whatever that means. |
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 | 网络搜索 |
ACTION_FACTORY_TEST | android.intent.action.FACTORY_TEST | 打开工厂测试入口 |
broadcast action:
接收广播信息时用,在程序中registerReceiver或AndroidManifest.xml中的<receiver>项
action名 | action值 | broadcast action |
ACTION_TIME_TICK | android.intent.action.TIME_TICK | 当前时间改变,每分钟一次,必须通过registerReceiver才可收到 |
ACTION_TIME_CHANGED | android.intent.action.TIME_SET | 时间被设置 |
ACTION_TIMEZONE_CHANGED | android.intent.action.TIMEZONE_CHANGED | 时区改变,这时intent需要保含time-zone - The java.util.TimeZone.getID() |
ACTION_BOOT_COMPLETED | android.intent.action.BOOT_COMPLETED | 广播一次,系统boot完成后广播 |
ACTION_PACKAGE_ADDED | android.intent.action.PACKAGE_ADDED | 安装新APK时广播 |
ACTION_PACKAGE_CHANGED | android.intent.action.PACKAGE_CHANGED | 已安装APK发生改变时广播 |
ACTION_PACKAGE_DATA_CLEARED | android.intent.action.PACKAGE_DATA_CLEARED | 用户清楚应用数据时广播 |
ACTION_PACKAGE_RESTARTED | android.intent.action.PACKAGE_RESTARTED | APK重启时发送,信息中包含包名 |
ACTION_PACKAGE_REMOVED | android.intent.action.PACKAGE_REMOVED | 已安装应用被删除 |
ACTION_BATTERY_CHANGED | android.intent.action.BATTERY_CHANGED | 粘连广播,包含电池的充电状态/电量等信息 |
ACTION_POWER_CONNECTED | android.intent.action.ACTION_POWER_CONNECTED | 外部电源插入后广播 |
ACTION_POWER_DISCONNECTED | android.intent.action.ACTION_POWER_DISCONNECTED | 外部电源移除 |
ACTION_UID_REMOVED | android.intent.action.UID_REMOVED | 一个用户ID被清除 |
ACTION_SHUTDOWN | android.intent.action.ACTION_SHUTDOWN | 关机 |
Categories:可通过addCategory(String)添加到intent
category名 | category值 | category意义 |
CATEGORY_DEFAULT | android.intent.category.DEFAULT | activity设置为可以接收implicit intent时用,默认是不接收的 |
CATEGORY_BROWSABLE | android.intent.category.BROWSABLE | 通过浏览器可以启动的activity需要指定该项 |
CATEGORY_TAB | android.intent.category.TAB | 想作为一个界面中的某一个选项卡时指定 |
CATEGORY_ALTERNATIVE | android.intent.category.ALTERNATIVE | 活动作为alternative action |
CATEGORY_SELECTED_ALTERNATIVE | android.intent.category.SELECTED_ALTERNATIVE | 活动作为alternative selection action |
CATEGORY_LAUNCHER | android.intent.category.LAUNCHER | 显示在屏幕顶层 |
CATEGORY_INFO | android.intent.category.INFO | 显示所在包的信息 |
CATEGORY_HOME | android.intent.category.HOME | home界面 |
CATEGORY_PREFERENCE | android.intent.category.PREFERENCE | This activity is a preference panel. |
CATEGORY_TEST | android.intent.category.TEST | 测试用 |
CATEGORY_CAR_DOCK | android.intent.category.CAR_DOCK | An activity to run when device is inserted into a car dock |
CATEGORY_DESK_DOCK | android.intent.category.DESK_DOCK | An activity to run when device is inserted into a desk dock. |
CATEGORY_LE_DESK_DOCK | android.intent.category.LE_DESK_DOCK | An activity to run when device is inserted into a analog (low end) dock |
CATEGORY_HE_DESK_DOCK | android.intent.category.HE_DESK_DOCK | An activity to run when device is inserted into a digital (high end) dock |
CATEGORY_CAR_MODE | android.intent.category.CAR_MODE | Used to indicate that the activity can be used in a car environment |
CATEGORY_APP_MARKET | android.intent.category.APP_MARKET | This activity allows the user to browse and download new applications |