Intent
文章目錄
- Intent
-
- 1. Intent簡介
- 2. Intent 屬性
- 3. Intent 種類
- 4. Intent 過濾器
1. Intent簡介
An intent is an abstract description of an operation to be performed. It can be used withto launch an
startActivity
,
Activity
to send it to any interested
broadcastIntent
components, and
BroadcastReceiver
or
Context.startService(Intent)
to communicate with a background
Context.bindService(Intent, ServiceConnection, int)
.
Service
Intent
用以在
APP
中
Activity
,
Service
,
Broadcast
間的通信,包含了一系列抽象的操作描述,具有幾大功能——啟動
Activity
、啟動
Service
、發送
Broadcast
。
2. Intent 屬性
主要屬性如下圖:
-
要處理的應用元件的名稱,為ComponentName
null
時系統自動找一個。
可以通過:
方法設定public Intent setComponent (ComponentName component)
Intent intent = new Intent(); ComponentName c = new ComponentName("<Activity所在包>", "<Activity含包完整名稱>"); intent.setComponentName(c); startActivity(intent);
-
Action
和
說明要進行的動作及該動作所需的資訊,例如撥打電話、發送短信,不同Data
有不同的Action
,如下圖。Data
- 設定
:Action
intent.setAction(<Intent.action>)
- 設定
:Data
intent.setData(<Uri data>)
- 設定完畢後
startActivity(intent)
即可
注意,涉及到權限問題,需要先在
中注冊權限。mainfest
- 設定
-
和Action
用以啟動其他Category
Activity
- 設定
:Action
intent.setAction(<Intent.action>)
- 設定
:Category
intent.addCategory (String category)
- 設定完畢後
即可startActivity(intent)
- 設定
-
多個Activity資料交換時,在Intent中借助Extras
存儲資料。Bundle
- 儲存資料:
,或者intent.putExtras(Bundle extras)
,傳回相同putExtra(key, value)
對象,用以鍊式調用。Intent
- 提取資料:
,或者Bundle getExtras ()
(如getXXXExtra
),傳回getDoubleExtra(...)
對象Bundle
- 儲存資料:
-
訓示安卓程式應該如何啟動另一個Flags
,指定Activity
啟動後是否在最近啟動Activity
清單中(Activity
)等等…Task
- 設定
:Flags
intent.setFlag(<intent.FLAG>)
- 設定
3. Intent 種類
分為顯示和隐式兩種。
3.1 顯示Intent
顯示的啟動一個
Activity
3.2 隐式Intent
不指定Activity,而是通過設定
Action
、
category
,
data
屬性,讓安卓系統找到一個目标Activity。
4. Intent 過濾器
根據Activity的
action
、
catogory
等屬性,對于
Intent
進行篩選、過濾,用以隐式
Intent
。
- 配置:通過
标簽在<intent-filter>
檔案中配置 組合使用參考AndroidManiFest.xml
Intent屬性