一个intent允许你在一个intent对象中对action进行描述以便在其他app中启动一个activity。这种intent的类型被称作隐式intent,因为他没有指定让某一个app组件启动,而是指定一个action并且提供一些数据来执行这个动作。
当你调用startActivity()或者startActivityForResult()并且传入一个隐式intent时,系统会处理这个intent并启动一个与之相对应的activity,如果有多个app可以处理他,系统则会弹出一个dialog让用户来选择用哪个app处理。
注意:如果在设备商没有对应隐式intent的程序,你的程序将会崩溃当他调用startactivity()的时候。你的程序应该调用resolveActivity()进行验证,如果这个结果非空,就表示至少有一个程序能够处理该intent并且安全的调用startActivity(),如果结果为空,你就不应该使用这个intent,如果有可能的话,你应该禁止这个调用intent的功能
1、闹钟intent
(1)只有时间、分钟和信息的extras支持2.3(level9)和更高。其他的extra则添加在以后的版本
(2)Action:ACTION_SET_ALARM
(3)Extra:EXTRA_HOUR:时间
EXTRA_MINUTES:分钟
EXTRA_MESSAGE:信息
EXTRA_DAY:包含一星期有那几天需要循环的ArrayList,每一天应该用Calendar中的类似Monday的integer来声明
EXTRA_RINGTONE:用URI来指定手机铃声,VALUE_RINGTONE_SELENT为没有铃声,不指定为默认铃声
EXTRA_VIBRATE:用boolean来制定是否震动
EXTRA_SKIP_UI:true为后台记时,false则会弹出记时页面
(4)注意:要设置该action需要有SET_ALARM权限
2、倒计时intent
(1)只能在4.4上使用
(2)action:ACTION_SET_TIMER
(3)Extra:EXTRA_LENGTH:时间长短,记时单位为秒
Extra_MESSAGE:信息
Extra_SKIP_UI:true为后台记时,false则会弹出记时页面
(4)注意:需要有SET_ALARM权限
3、显示所有闹钟
显示所有闹钟的列表。虽然不是有许多程序都调用这个intent,但是任何闹钟行为都应该实现这个intent filter并且反应出当前的闹钟列表
(1)只能在4.4以上使用
(2)Action:ACTION_SHOW_ALARM
4、日历
在用户日历中添加一个新时间
(1)action:ACTION_INSERT
(2)Data URL:Event.CONTENT_URI
(3)MIME Type:vnd.android.cursor.dir/event
(4)Extra:EXTRA_EVENT_ALL_DAY:用一个boolean来指定是否是一个全天事件
EXTRA_EVENT_BEGIN_TIME:开始时间,时代以来的毫秒
EXTRA_EVENT_END_TIME:结束时间,时代以来毫秒
TITLE:事件标题
DESCRTPTION:事件描述
EVENT_LOCATION:事件位置
EXTRA_EMAIL:一个以逗号分隔的受邀请者的邮件地址。许多事件详情可以用在CalendarContract.EventsColumns.class中的常量来指定
5、相机
(1)Action:ACTION_IMAGE_CAPTURE或者ACTION_VIREO_CAPTURE
(2)Extra:EXTRA_OUTPUT:把该uri地址作为相机应该保存图片的地方。当相机程序成功的返回你的程序,你可以获得照片或视频通过EXTRA_OUTPUT所指定的uri值
(3)注意:当你使用ACTION_IMAGE_CAPTURE来拍照时,相机在result intent可能也会返回缩略图,用bitmap保存,名字为data
(4)使用intent-filter:当处理intent时,你的activity应该检查EXTRA_OUTPUT,然后在该位置保存图片或者录像,并调用setResult,并在其中的intent加入参数名为data的缩略图
6、still image mode(只是调用拍照功能,不关心返回结果)
(1)Action:INTENT_ACTION_STILL_IMAGE_CAMERA
7、still video camera(只是调用摄像功能,不关心返回结果)
(1)Action:INTENT_ACTION_VIDEO_CAMERA
8、联系人应用
(1)用户选择一个联系人,并且提供给你的程序所有的联系人信息。
(2)结果intent会传入onActivityResult()中并包含以下内容:uri指向被选中的联系人,并使用contacts Provider来使用联系人即使你的程序没有READ_CONTACTS权限
(3)如果你只需要一个指定的联系人信息,比如电话号码和email,可以看下一部分
(4)Action:ACTION_PICK
(5)MIME:Contacts.CONTENT_TYPE
9、选择特定的联系人数据
(1)获得用户选择的指定部分的联系人数据,比如电话号码,邮箱地址,可以通过指定ACTION_PICK的action并指定MIME TYPE类型来获得。
(2)如果你只需要一种类型的数据,使用ContactsContract.CommonDataKinds类中的CONTENT_TYPE会比Contacts.CONTENT_TYPE更有效率因为结果可以直接访问所需数据而不需要通过Contacts Provider执行更复杂的查询
(3)结果intent会传入onActivityResult()中并包含以下内容:uri指向被选中的联系人,并使用contacts Provider来使用联系人即使你的程序没有READ_CONTACTS权限
(4)Action:ACTION_PICK
(5)MIME Type:CommonDataKinds.Phone.CONTENT_TYPE 电话号码
--------------------------.Email.---------------------- email
-------------------------.StructuredPostal--------- 地址
更多地可从ContactsContract中的CONTENT_TYPE中查询
10、显示联系人
(1)显示已知的联系人信息,使用ACTION_VIEW并在intent的data中指定联系人的内容
(2)主要有两种方法获得uri
1)使用ACTION_PICK获得返回的URI
2)直接获得联系人的列表(需要READ_CONTRACT权限)
(3)ACTION:ACTION_VIEW
(4)Data URI Scheme:content<URI>
11、编辑联系人
(1)编辑已存在的联系人,使用ACTION_EDIT,并且在intent的data中用content<URI>指定联系人,在ContactsContract.Intent.Insert定义着更多联系人信息常量。
(2)主要有两种方法获得uri
1)使用ACTION_PICK获得返回的URI
2)直接获得联系人的列表(需要READ_CONTRACT权限)
(3)Action:ACTION_EDIT
(4)Data URI Scheme:content:<URI>
(5)更多地extra被定义在ContactsContract.Intent.Insert中
12、插入联系人
(1)Action:ACTION_INSERT
(2)MIME Type:Contacts.CONTENT_TYPE
(3)
更多地extra被定义在ContactsContract.Intent.Insert中
intent.setData(Uri.parse("mailto:"));
14、检索特定文件的类型
(10)在这个ui中提供你程序的文件并且允许其他应用程序打开,你必须实现 DocumentsProvider并且包括一个intent-filter
<intent-filter> <action android:name="android.content.action.DOCUMENTS_PROVIDER" /> </intent-filter>
16、播放媒体文件
(1)播放音乐使用ACTION_VIEW并且通过在intent的data中设定uri位置
(2)Action:ACTION_VIEW
(3)Data URI Scheme:file<uri> content<uri> http:<uri>
(4)MIME Type :audio/*
application/ogg
application/x-ogg
application/itunes
17、电话
(1)拨打一个电话号码需要使用ACTION_DIAL并使用uri定义电话号码,但是打开电话程序后只会显示电话号码,需要用户自己按下拨打按钮
(2)直接打电话的话使用ACTION_CALL并使用uri定义电话号码,但是打开电话程序后会直接拨打出去,不需要用户按下按钮,需要CALL_PHONE权限
(3)Action:ACTION_DIAL或者ACTION_CALL
(4)Data URI Scheme:tel<phone-number> voicemail<phone-number>
(5)手机的拨号器适合规范化的电话号码,你要是不能确定拨号器是否可以处理,可以使用uri.frompart方法。
18、执行网络搜索
(1)Action:ACTION_WEB_SEARCH
(2)EXTRA:SearchManager.QUERY(搜索的字符串)
19、打开指定功能的设置
(1)Action:ACTION_SETTING
ACTION_WIRELESS_SETTINGS
ACTION_AIRPLANE_MODE_SETTINGS
ACTION_WIFI_SETTINGS
ACTION_APN_SETTINGS
ACTION_BLUETOOTH_SETTINGS
ACTION_DATA_SETTINGS
ACTION_LOCALE_SETTINGS
ACTION_INPUT_METHOD_SETTINGS
ACTION_DISPLAY_SETTINGS
ACTION_SECURITY_SETTINGS
ACTION_LOCATION_SOURCE_SETTINGS
ACTION_INTERNAL_STORAGE_SETTINGS
ACTION_MEMORY_CARD_SETTING
其他的action可以看Setting文档
20、短信
(1)Action:ACTION_SENDTO 或者 ACTION_SEND 或者 ACTION_SEND_MULTIPLE
(2)Data URI Scheme:sms<photo number> smsto<photo number> mms<photo number> mmsto<photo number>
(3)MIME Type:text/plain image/* video/*
(4)Extra:subject 消息主题(一般只有MMS)
sms_body:消息内容
EXTRA_STREAM:指向附件的uri,如果使用ACTION_SEND_MULTIPLE,则这个extra应该用一个arraylist数组
(5)如果你只想让你的intent被短信处理,而不是email和其他社交软件,那么使用ACTION_SEND并使用smsto的data scheme
(6)如果你开发短信程序,那么你必须实现几个额外的action作为intent-filter以作为默认短信应用在android 4.4以及更高的版本
21、浏览器
(1)Action:ACTION_VIEW
(2)Data URI Scheme:http/https<URI>
(3)MIME Type:text/plain text/html application/xhtml+xml application/vnd.wap.xhtml+xml
(4)如果你的android app提供类似你网站的功能,包括intent-filter和uri都指向你的网页。如果用户安装了你的应用程序,那些指向网站链接的会应该你的应用而不是网页。