Android 转:Intents解析?

来源:互联网 发布:iphone8网络制式 编辑:程序博客网 时间:2024/06/08 18:30
Android 转:Intents解析?
2009-05-11 15:33
本节定义了Intent是什么和如何使用它。

    一个Intent是Android从一个Activity(活动)传递信息到另外一个活动的方法。你可以认为一个Intent是一个活动间交换的信息。例 如,假定你有一个活动需要来打开一个网页浏览器并且在Android设备上显示一个页面。你的活动应当发送一个“在网页浏览器中打开某页的 Intent(意图)”,就像一个WEB_SEARCH_ACTION的Intent,一个Android Intent解答器。Intent解答器从语法上分析一个活动的列表并且选择最匹配你的Intent的一个。那就是,网页浏览器的活动。Intent解答 器然后传递你的网页到浏览器中并且启动网页浏览器活动。

     Intents被分成两个主要目录

● Activity Action Intents(活动动作意图)Intents用来呼叫应用程序以外的活动。只有一个活动可以处理Intent。例如,对于网页浏览器,你需要打开网页浏览器活动来显示一个页面。

● Broadcast Intents (广播意图)Intents 被送出到多个活动来处理。一个被Android发出的广播意图的例子就是,当前电池的电量。任何活动处理这个意图并适时的反应。——例如,如果电池电量低到一定程度,取消一个活动。

表格 7-1 列出并且描述了通用的,可以使用活动动作意图。正如你注意到的一样,大多数情况下,从Intent名字可以看出这个Intent是做什么的。

Activity Action IntentMessageADD_SHORTCUT_ACTION增加一个功能快捷菜单到Android的主屏ALL_APPS_ACTION列出设备上可用的所有应用程序ANSWER_ACTION接电话BUG_REPORT_ACTION打开调试报告活动CALL_ACTION呼叫一个提供的位置DELETE_ACTION删除定义的数据DIAL_ACTION打开拨号活动并且拨打一个定义好的号码EDIT_ACTION对有权使用的数据提供编辑EMERGENCY_DIAL_ACTION拨打一个紧急号码FACTORY_TEST_ACTION回复工厂测试设定GET_CONTENT_ACTION选择并返回定义的数据INSERT_ACTION插入一个空的条目MAIN_ACTION建立一个活动开始点PICK_ACTION挑选一个条目并且返回一个选择PICK_ACTIVITY_ACTION挑选一个特定的活动(返回一个类)RUN_ACTION执行特定的数据SEARCH_ACTION在系统上启动搜索SEND_ACTION发送数据给没有定义的接收者SENDTO_ACTION发送数据到指定的接收者SETTINGS_ACTION启动系统设定SYNC_ACTION和外部的源同步手机VIEW_ACTION (DEFAULT_ACTION)打开一个视图WALLPAPER_SETTINGS_ACTION显示修改Android墙纸的设定WEB_SEARCH_ACTION打开谷歌搜索,或者其它定义过的网页

注意

本章中的应用程序会用到列在表7-1中的Intents:
CALL_ACTION 和 DIAL_ACTION。这些Intents使你有进入手机拨号和呼叫的能力。

表格7-2列出并描述了通用的广播意图。当你需要为一个定义的Intent建立一个接受器时,请参考这个表。

Broadcast Intent信息CALL_FORWARDING_STATE_CHANGED_ACTION电话呼叫转接状态已经改变CAMERA_BUTTON_ACTION照相机的按钮被按下CONFIGURATION_CHANGED_ACTION设备配置发生改变DATA_ACTIVITY_STATE_CHANGED_ACTION设备的数据活动状态改变DATA_CONNECTION_STATE_CHANGED_ACTION数据连接状态改变DATE_CHANGED_ACTION手机系统数据改变FOTA_CANCEL_ACTION取消未决的系统更新下载FOTA_INSTALL_ACTION升级已经下载必须立即安装(由系统发送)FOTA_READY_ACTION升级已经下载可以延迟安装(由系统发送)FOTA_RESTART_ACTION重启一个系统升级下载FOTA_UPDATE_ACTION开始系统升级下载GTALK_SERVICES_CONNECTED_ACTION发送当GTALK已经成功建立GTALK_SERVICES_DISCONNECTED_ACTION发送当GTALK已经断开MEDIA_BAD_REMOVAL_ACTION发送当一个SD储存卡移开但是从系统中未成功移除MEDIA_BUTTON_ACTION发送当媒体按钮按下MEDIA_EJECT_ACTION发送当弹出动作为一个SD储存卡被初始化MEDIA_MOUNTED_ACTION发送当一个SD储存卡在系统中成功安装MEDIA_REMOVED_ACTION发送当检测到储存卡移出MEDIA_SCANNER_FINISHED_ACTION发送当扫描器完成MEDIA_SHARED_STARTED_ACTION发送当扫描器开始MEDIA_UNMOUNTED_ACTION发送当SD卡被检测到但是没有被安装MESSAGE_WAITING_STATE_CHANGED手机“信息等待”状态发生变化NETWORK_TICKLE_RECEIVED_ACTION一个新网络设备通知被接受PACKAGE_ADDED_ACTION当一个新的包装被安装在设备上发送PACKAGE_CHANGE_ACTION发送当现存的包装发生改变PACKAGE_INSTALL_ACTION一个包装可以被下载和安装PACKAGE_REMOVED_ACTION一个包装已经被移除PHONE_INTERFACE_ADDED_ACTION设备的手机界面已经被建立PHONE_STATE_CHANGED_ACTION设备的手机状态已经改变PROVIDER_CHANGED_ACTION设备从一个接收者处接收到通知PROVISIONING_CHECK_ACTION从供给服务中检测最新的设定SCREEN_OFF_ACTION屏幕被关闭(设备发送)SCREEN_ON_ACTION屏幕被打开(设备发送)SERVICE_STATE_CHANGED_ACTION服务状态被改变SIGNAL_STRENGTH_CHANGED_ACTION信号强度改变

注意

一些广播意图经常被发送,如TIME_TICK_ACTION
和 SIGNAL_STRENGTH_CHANGED_ACTION。使用时请谨慎处理。你不应当试着去同时接受这样的广播。Intent只是大约三分之一。 其实Intent只是做了某些事情,而且它不能自己来做任何事。你需要Intent过滤器和Intent接受其来听,翻译Intents.一个 Intent接收器就像一个Activity的邮箱。Intent接收器被用来允许一个活动来接受定义的Intent。使用前一个网页浏览器的例子,网页 浏览器活动被设定来接受网页浏览器Intent。一个像这样的系统允许不相关的活动来忽略不能处理的Intent。它同时允许需要其它活动辅助的活动利用 这个活动,而不需要知道如何呼叫它。

    有了Intents和Intents接收器,一个活动可以发送一个Intent并且另外一个可以接受。不过,需要一些东西来管理两个活动之间的信息类型。这就是为什么要用Intent过滤器了。

    Intent过滤器被活动用来描述要接受的Intent类型。更重要的是,它们在Intent的内部概括了传递的数据类型。因此,在我们例子的方案中,我 们要网页浏览器来打开网页。Intent过滤器将会陈述数据使用 WEB_SEARCH_ACTION Intent应当是URL格式的。