Action、Category、Data、Extras知識詳解
開頭
Intent作為聯絡各Activity之間的紐帶,其作用並不僅僅只限於簡單的資料傳遞。通過其自帶的屬性,其實可以方便的完成很多較為複雜的操作。例如直接呼叫撥號功能、直接自動呼叫合適的程式開啟不同型別的檔案等等。
諸如此類,都可以通過設定Intent屬性來完成。
Intent主要有以下四個重要屬性,它們分別為:
Action:Action屬性的值為一個字串,它代表了系統中已經定義了一系列常用的動作。通過setAction()方法或在清單檔案AndroidManifest.xml中設定。預設為:DEFAULT。
Data
Category:Category屬性用於指定當前動作(Action)被執行的環境。通過addCategory()方法或在清單檔案AndroidManifest.xml中設定。預設為:CATEGORY_DEFAULT。
Extras:Extras屬性主要用於傳遞目標元件所需要的額外的資料。通過putExtras()方法設定。常作為一個Intent,BroadCast Receiver等元件的傳入資料使用!
以上的一些基本知識,還有一些約束希望大家可以自己去了解,具體可以參見<Android 4高階程式設計>這邊書第五章
四個屬性所有常量值如下所示:(寫得快死掉,請大家轉載要註明出處:http://blog.csdn.net/ljphhj)
為了讓講解起來比較有條理,我將按照自己捋的順序來講解這四個屬性!
Data:
Uri.Parse(x字串):[格式] |
意義 |
tel:電話號碼 |
用於一些撥號的程式 |
mailto:收件人郵箱地址 |
用於發郵件的程式 |
smsto:簡訊收件人號碼 |
用於傳送簡訊的程式 |
content://內容資料格式 |
用於一些要讀取資料內容的地方() |
file://檔案路徑 |
用於開啟指定路徑的檔案 |
market://search?q=pname:pkgname:市場資料格式 |
在Google Market裡搜尋包名為pkgname的應用 |
geo:latitude,longitude |
在地圖上顯示指定經緯度的位置 |
http://xxx.xxxx.com |
在瀏覽器中開啟一個網頁 |
Action:
Activity Action
常量名稱 |
意義 |
ACTION_MAIN |
應用程式入口 |
ACTION_VIEW |
顯示資料給使用者 |
ACTION_ATTACH_DATA |
指明附加資訊給其他地方的一些資料 |
ACTION_EDIT |
顯示可編輯的資料 |
ACTION_PICK |
選擇資料 |
ACTION_CHOOSER |
顯示一個Activity選擇器 |
ACTION_GET_CONTENT |
獲得內容 |
ACTION_DIAL |
顯示打電話的撥號盤 |
ACITON_CALL |
直接打電話 |
ACTION_SEND |
直接發簡訊 |
ACTION_SENDTO |
選擇發簡訊 |
ACTION_SEND_MULTIPLE |
共享多個二進位制內容(MIME type型別) |
ACTION_ANSWER |
應答來電 |
ACTION_INSERT |
插入資料 |
ACTION_DELETE |
刪除資料 |
ACTION_RUN |
執行資料 |
ACTION_SYNC |
同步資料 |
ACTION_PICK_ACTIVITY |
從資料項中選擇一個子專案,並返回你所選中的專案Activity |
ACTION_SEARCH |
搜尋 |
ACTION_SEARCH_LONG_PRESS |
搜尋長按 |
轉載請註明出處=>csdn胖虎:http://blog.csdn.net/ljphhj |
|
ACTION_WEB_SEARCH |
Web搜尋 |
ACTION_FACTORY_TEST |
工廠測試入口點 |
ACTION_ALL_APPS |
列出所有能應用(相當於啟動器Launcher) |
ACTION_BUG_REPORT |
顯示出Bug報告 |
ACTION_CREATE_SHORTCUT |
建立具有“快捷方式”的Activity |
ACTION_FACTORY_TEST |
工廠測試的入口點 |
ACTION_INSERT_OR_EDIT |
插入並編輯新資料(新增聯絡人) |
ACTION_POWER_USAGE_SUMMARY |
顯示電池的使用資訊 |
ACTION_SET_WALLPAPER |
呼叫設定牆紙的Activity |
ACTION_SYSTEM_TUTORIAL |
Start the platform-defined tutorial |
ACTION_VOICE_COMMAND |
開啟語音命令Activity |
|
|
|
|
|
|
BroadCast Action
常量名稱 |
意義 |
|
ACTION_AIRPLANE_MODE_CHANGED |
判斷是否開啟“飛航模式” |
|
ACTION_BATTERY_CHANGED |
監控電池狀態改變 |
|
ACTION_BATTERY_OKAY |
電池脫離“低電量”時達到正常狀態 |
|
ACTION_BOOT_COMPLETED |
在系統完成啟動之後觸發 |
|
ACTION_CAMERA_BUTTON |
按下“按照”按鈕時觸發 |
|
ACTION_CLOSE_SYSTEM_DIALOGS |
系統關閉時/按下Home鍵/鎖屏等使系統視窗關閉的事件時通知 |
|
ACTION_CONFIGURATION_CHANGED |
當“語言”發生改變時通知(只能通過registerReceiver來註冊廣播,不能在清單檔案中註冊)【不建議使用】 |
|
ACTION_DATE_CHANGED |
日期改變 |
|
ACTION_DEVICE_STORAGE_LOW |
裝置記憶體不足時通知 |
|
ACTION_DEVICE_STORAGE_OK |
裝置記憶體情況恢復正常時通知 |
|
ACTION_DOCK_EVENT |
Dock 底座的通知(車載、家用、桌面等底座) |
|
ACTION_EXTERNAL_APPLICATIONS_AVAILABLE |
安裝的APP從SD卡移動到系統空間 |
|
ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE |
安裝的APP從系統空間移動到SD卡 |
|
ACTION_GTALK_SERVICE_CONNECTED |
當GTalk連線上的時候通知 |
|
ACTION_GTALK_SERVICE_DISCONNECTED |
當GTalk斷開連線的時候通知 |
|
ACTION_HEADSET_PLUG |
連線上外設的時候通知(耳機等) |
|
ACTION_INPUT_METHOD_CHANGED |
輸入法發生改變時通知 |
|
ACTION_LOCALE_CHANGED |
當前系統區域位置改變時通知 |
|
ACTION_MANAGE_PACKAGE_STORAGE |
當裝置記憶體不足時(LOW),由使用者發起這個廣播通知,觸發開啟包管理器 |
|
ACTION_MEDIA_BAD_REMOVAL |
未正確移除SD卡(正確移除SD卡的方法:設定--SD卡和裝置記憶體--解除安裝SD卡),但已把SD卡取出來時發出的廣播 廣播:擴充套件介質(擴充套件卡)已經從 SD 卡插槽拔出,但是掛載點 (mount point) 還沒解除 (unmount) |
|
ACTION_MEDIA_BUTTON |
按Media 鍵的時候通知 |
|
ACTION_MEDIA_CHECKING |
SD卡插入時掛載會發出該通知 |
|
ACTION_MEDIA_EJECT |
當用戶移除掉外部裝置SD卡的時候,需要在這個廣播通知內進行掛載點開啟的全部檔案的關閉處理,在這個通知中SD卡還可以讀寫,在收到ACTION_MEDIA_REMOVED、ACTION_MEDIA_UNMOUNTED等廣播之後,sd 卡便不可以讀寫了! |
|
ACTION_MEDIA_MOUNTED |
SD卡被成功掛載 |
|
ACTION_MEDIA_NOFS |
表示SD卡存在,但是檔案系統不相容或者尚未格式化 |
|
ACTION_MEDIA_REMOVED |
SD卡被移除 |
|
ACTION_MEDIA_UNMOUNTED |
SD卡已解除安裝 |
|
ACTION_MEDIA_SHARED |
SD卡進入USB連線模式 |
|
ACTION_MEDIA_UNSHARED |
SD卡退出USB連線模式 |
|
ACTION_MEDIA_UNMOUNTABLE |
SD卡存在,但是無法掛載 |
|
ACTION_MEDIA_SCANNER_STARTED |
開始掃描 |
|
ACTION_MEDIA_SCANNER_FINISHED |
結束掃描 |
|
ACTION_MEDIA_SCANNER_SCAN_FILE |
正在掃描一個檔案 |
|
ACTION_NEW_OUTGOING_CALL |
撥出的電話會通知(可以做撥出電話的攔截) |
|
轉載請註明出處=>csdn胖虎:http://blog.csdn.net/ljphhj |
||
ACTION_PACKAGE_ADDED |
有應用程式被新增 |
|
ACTION_PACKAGE_CHANGED |
有應用程式被改變 |
|
ACTION_PACKAGE_DATA_CLEARED |
有應用程式資料被清除 |
|
ACTION_PACKAGE_INSTALL |
有應用程式被安裝(監控惡意軟體) |
|
ACTION_PACKAGE_REMOVED |
有應用程式被刪除 |
|
ACTION_PACKAGE_REPLACED |
有應用程式被替代 |
|
ACTION_PACKAGE_RESTARTED |
有應用程式被重啟 |
|
ACTION_POWER_CONNECTED |
外接電源接入(或充電器)時通知 |
|
ACTION_POWER_DISCONNECTED |
外接電源移除(或充電器)時通知 |
|
ACTION_PROVIDER_CHANGED |
有的ContentProvider有自己的空間,這些空間我們想要接觸,當有資料發生改變的時候,我們可以觸發這個廣播通知。 |
|
ACTION_REBOOT |
裝置重啟通知 |
|
ACTION_SCREEN_ON |
螢幕開啟(只能通過程式碼動態註冊BroadCastReceiver才能生效) |
|
ACTION_SCREEN_OFF |
螢幕關閉(只能通過程式碼動態註冊BroadCastReceiver才能生效) |
|
ACTION_SHUTDOWN |
系統關機廣播 |
|
ACTION_TIME_CHANGED |
時間改變時通知 |
|
ACTION_TIME_TICK |
以分鐘為單位,一分鐘觸發一次,(不能在清單檔案中定義,只能通過動態註冊的方式) |
|
ACTION_TIMEZONE_CHANGED |
時區改變時通知 |
|
ACTION_UID_REMOVED |
使用者UID被移除時通知 |
|
ACTION_UMS_CONNECTED |
手機已進入大容量模式,但是沒有訊息說USB有沒有連上 |
|
ACTION_UMS_DISCONNECTED |
手機已退出容量模式 |
|
ACTION_USER_PRESENT |
當用戶螢幕解鎖後通知 |
|
ACTION_WALLPAPER_CHANGED |
桌布改變的通知 |
|
|
|
|
|
Category:
常量名稱 |
意義 |
CATEGORY_DEFAULT |
Android系統中預設的執行方式,按照普通Activity的執行方式執行。 |
CATEGORY_ALTERNATIVE |
把要做的動作指定為在特定資料型別上執行的預設動作的可選項(如:一個聯絡人的預設動作為檢視其資訊,而可選的動作則是對其進行資訊編輯) |
CATEGORY_CAR_DOCK |
指定手機被插入汽車底座(硬體)時執行該Activity |
CATEGORY_CAR_MODE |
設定該Activity可在車載環境下使用 |
CATEGORY_DESK_DOCK |
指定手機被插入桌面底座(硬體)時執行該Activity |
CATEGORY_PREFERENCE |
設定該元件為Preference。 |
CATEGORY_DEVELOPMENT_PREFERENCE |
說明Activity是一個設定面板 |
CATEGORY_EMBED |
說明可以執行在Activity容器內 |
CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST |
用來作為測試儀器測試框架下的程式碼 |
CATEGORY_HOME |
設定該元件為Home Activity。 |
CATEGORY_LAUNCHER |
設定該元件為在當前應用程式啟動器中優先順序最高的Activity,通常為入口ACTION_MAIN(Action)配合使用。 |
CATEGORY_BROWSABLE |
設定該元件可以使用瀏覽器啟動。 |
CATEGORY_GADGET |
設定該元件可以內嵌到另外的Activity中。 |
轉載請註明出處=>csdn胖虎:http://blog.csdn.net/ljphhj |
|
CATEGORY_INFO |
用於提供包資訊 |
CATEGORY_MONKEY |
說明可以被Monkey或者其他的測試工具執行 |
CATEGORY_OPENABLE |
用來指示一個ACTION_GET_CONTENT的intent, 希望可以ContentResolver.openInputStream可以開啟URI |
CATEGORY_SAMPLE_CODE |
作為一個簡單程式碼示例使用(使用者一般不用這個) |
CATEGORY_SELECTED_ALTERNATIVE |
設定這個Activity是否可以被認為是使用者當前選擇的資料的一個可選擇的Action(做外掛擴充套件:http://www.cnblogs.com/xirihanlin/archive/2009/07/31/1536055.html) |
CATEGORY_TAB |
用於一個TabActivity中 |
CATEGORY_TEST |
用於一般的測試示例程式(一般使用者不用) |
CATEGORY_UNIT_TEST |
用於單元測試 |
Extras:
EXTRA常量值 |
意義 |
EXTRA_ALARM_COUNT |
存放延遲的Pending Alarms的數量 |
EXTRA_BCC |
存放郵件密送人地址的字串陣列 |
EXTRA_CC |
存放郵件抄送人地址的字串陣列 |
EXTRA_CHANGED_COMPONENT_NAME |
Deprecated.(過時了) |
EXTRA_CHANGED_COMPONENT_NAME_LIST |
用於呼叫ACTION_PACKAGE_CHANGED時,列出改變的元件的名字陣列
|
EXTRA_DATA_REMOVED |
用於ACTION_PACKAGE_REMOVED時,指示是完全解除安裝(刪除程式和資料),還是部分解除安裝(留下資料,這意味著有可能是更新應用程式) |
EXTRA_DOCK_STATE |
用於ACTION_DOCK_EVENT需要這個Dock State.它能取的值有EXTRA_DOCK_STATE_UNDOCKED,EXTRA_DOCK_STATE_DESK,EXTRA_DOCK_STATE_CAR. |
EXTRA_DOCK_STATE_CAR
|
汽車底座 |
EXTRA_DOCK_STATE_DESK
|
桌面底座 |
EXTRA_DOCK_STATE_UNDOCKED |
無Dock底座 |
EXTRA_DONT_KILL_APP |
用一個boolean型的值在呼叫ACTION_PACKAGE_REMOVED或者ACTION_PACKAGE_CHANGED來過載預設的重啟應用的行為 |
EXTRA_EMAIL |
存放郵件地址的字串陣列 |
EXTRA_INITIAL_INTENTS |
增加額外的Activity選擇項到ACTION_CHOOSER呼叫時的選擇列表中 |
EXTRA_INTENT |
配合ACTION_PICK_ACTIVITY.選擇你想要的Activity |
EXTRA_KEY_EVENT |
以KeyEvent物件方式存放觸發Intent的按鍵 |
EXTRA_PHONE_NUMBER |
存放呼叫ACTION_CALL時的電話號碼 |
EXTRA_REMOTE_INTENT_TOKEN |
遠端的Intent |
EXTRA_REPLACING |
一個boolean值配合ACTION_PACKAGE_REMOVED來指示是否程式被替換(重新安裝程式) |
EXTRA_SHORTCUT_ICON |
圖示的名字字串,它對應的型別為Bitmap,作為快捷方式的圖示 |
EXTRA_SHORTCUT_ICON_RESOURCE |
圖示的名字的資源字串,型別為ShortcutIconResource,作為快捷方式的圖示 |
EXTRA_SHORTCUT_INTENT |
用於shortcut(快捷方式)的Intent中
|
EXTRA_STREAM |
A content: URI holding a stream of data associated with the Intent, used with ACTION_SEND to supply the data being sent. |
EXTRA_SHORTCUT_NAME |
配合ACTION_CREATE_SHORTCUT來建立一個Activity的快捷方式時,指定快捷方式的名字
|
EXTRA_SUBJECT |
存放郵件主題字串 |
EXTRA_TEMPLATE |
The initial data to place in a newly created record. Use with ACTION_INSERT. The data here is a Map containing the same fields as would be given to the underlying ContentProvider.insert() call. |
EXTRA_TEXT |
存放郵件內容 |
EXTRA_TITLE |
配合ACTION_CHOOSER,在建立Chooser Dialog的時候,指定該Dialog的Title. |
轉載請註明出處=>csdn胖虎:http://blog.csdn.net/ljphhj |
|
EXTRA_UID |
一個int型別,配合ACTION_UID_REMOVED支援註冊uid的包,方便當ACTION_PACKAGE_REMOVED或者ACTION_PACKAGE_CHANGED觸發時能 找到同一個目標(用UID來區分) |
希望這些對大家學習Intent中的這些常量值,還有BroadCast Receiver的學習有一些幫助。
轉載請註明出處:http://blog.csdn.net/ljphhj