常用Intent

一个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中


13、Email
(1)Action:ACTION_SENDTO(不带附件)
                      ACTION_SEND(带一个附件)
                      ACTION_SEND_MULTIPLE(带多个附件)
(2)MIME Type
                      text/plain
                      */*
(3)Extra
                      INTENT.EXTRA_EMAIL(包含收件人的邮箱地址的string数组)
                      INTENT.EXTRA_CC(包含抄送收件人的邮箱地址的string数组)
                      INTENT.EXTRA_BCC(包含暗抄送收件人的邮箱地址的string数组)
                      INTENT.EXTRA_SUBJECT(邮件主题)
                      INTENT.EXTRA_TEXT(邮件内容)
                      INTENT.EXTRA_STREAM(指向附件的uri,如果使用ACTION_SEND_MULTIPLE,则应该使用包含多个uri的arraylist)


(4)如果你要确保你的intent只被email程序处理,那就使用ACTION_SENDTO并且
  intent.setData(Uri.parse("mailto:")); 

14、检索特定文件的类型
(1)要求用户选择一个文件比如文档或者图片并返回一个引用给你的程序,使用ACTION_GET_CONTENT并且指定你希望的MIME Type。并且该引用是十分短暂的,仅限于该activity的生命周期内,因此如果在之后还要使用的话可以导入该文件的副本。这个intent也允许用户创建一个新的文件,比如用相机拍一张新的照片,而不是只能选择旧照片
(2)onActivityResult中的intent中的data中包含着指向该文件的uri。这个URI可以是http uri ,content uri。但是,如果你想只能从content provider(uri content)中选择文件的话并且可以用openFileDescriptor()读取的文件流的话,你应该将CATEGORY_OPENABLE的category加入intent中。
(3)在Android4.3及以上,你可以通过添加EXTRA_ALLOW_MULTIPLE并设置为true允许用户选择多个文件,然后你可以在CilpData中得到每一个文件通过getClipData
(4)Action:ACTION_GET_CONTENT
(5)MIME Type:根据用户所选择的文件来决定
(6)Extra:
                    EXTRA_ALLOW_MULTIPLE(用一个boolean值来声明是否一次只能选择一个文件)
                    EXTRA_LOCAL_ONLY(用一个boolean值来声明是否只能从本地读取,而不是使用远程服务)
(7)CateGory:CATEGORY_OPENABLE(返回一个只能用openFileDescriptor()打开的文件流)


15、打开特定类型的文件
(1)在使用ACTION_GET_CONTENT时,你必须导入文件的副本。但是在android4.4以上,你可以通过ACTION_OPEN_DOCUNMENT并且指定MIME Type来使用其他程序来管理文件,同时他也允许用户用ACTION_CREATE_DOCUMENT来创建文件。比如选择一个已经存在的pdf文件(在别的程序之内管理文档存储),你的应用程序得到可以写入文档的uri地址
(2)在onActivityResult中ACTION_GET_CONTENT会返回各种类型的URI,而ACTION_OPEN_DOUNMENT和ACTION_CREATE_DOCUMENT总是返回支持DocumentsProvideer.Document的指定所选文件的content:uri。你可以用openFileDescriptor()打开文件并用DocumentsContract.Document中的列来查询
详细信息
(3)返回的URI会给你的程序长期的读写权限,所以ACTION_OPEN_DOCUMENT在你想要阅读一个没有拷贝进你的程序的文件或者是在你什么时候想编辑文件的时候是非常有用的            
(4)在Android4.3及以上,你可以通过添加EXTRA_ALLOW_MULTIPLE并设置为true允许用户选择多个文件,然后你可以在CilpData中得到每一个文件通过getClipData
(5)Action:ACTION_OPEN_DOCUMENT或者ACTION_CREATE_DOCUMENT
(6)MIME Type:根据用户所选择的文件来决定
(7)Extra:EXTRA_MIME_TYPE(MIME类型的数组,对应你的程序所请求的文件类型,当你使用这个extra时,你必须把主MIME Type类型 setType() */*)
                     EXTRA_ALLOW_MULTIPLE(boolean 是否可以选择多个文件)
                     EXTRA_TITLE(用ACTION_CREATE_DOCUMENT来指定文件的初始名)
                     EXTRA_LOCAL_ONLY(用一个boolean值来声明是否只能从本地读取,而不是使用远程服务)
(8)CateGory:CATEGORY_OPENABLE(返回一个只能用openFileDescriptor()打开的文件流)
(9)第三方应用程序不能相应ACTION_OPEN_DOCUNMENT这个intent。相反的,系统接受这个intent并在一个统一的界面显示出所有的可用文件

(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都指向你的网页。如果用户安装了你的应用程序,那些指向网站链接的会应该你的应用而不是网页。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值