Intent的組成主要有Component name, Action, Date, Category, Extras和Flags

一些細節可以到官網https://developer.android.com/reference/android/content/Intent.html

Intent的成員介紹如下

 

Component name
用來指定啟動哪個元件
指定時則當作explicit intent,
沒指定則代表implicit intent
當在啟動service時則一定要指定
可以用setComponent(), setClass(), setClassName()
或是Intent的建構子來處理

Action
用string來指定動作
在broadcast內是指系統已發生的回報動作
可以自訂或使用其他預設的
可以用setAction()或是Intent的建構子來使用
自訂時需將app的package加入, 例如:
static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL";
而常用的Intent Action舉例如下:
ACTION_VIEW
當有資訊想用Activity向使用者顯示
ACTION_SEND
有資料想透過其他應用程式分享時

Data
可藉用設定URI和MIME typr幫助Android系統
找出做適合接收的原件
由Action來決定帶的資料型態
如果是ACTION_EDIT的類型, 就需要帶URI
用setData()來設定URI
用setType()來設定MIME type
要同時使用時則必須用setDataAndType()

Category
用String來指定目標component要符合的category
可以有0~多個
用addCategory()來指定
常見的有
CATEGORY_BROWSABLE
目標Activity可以
CATEGORY_LAUNCHER
代表該Activity是開始的activity, 並在程式啟動器中

用component name, action, data, 和category
讓Android系統可以分析出應用程式的Component

Extras
可以用putExtra()來帶額外的資訊
也可以自行建立Bundle來攜帶
可用內建的EXTRA_EMAIL常數來代mail
或是EXTRA_SUBJECT來帶子物件
如果要再定常數時要加package name
例如:
static final String EXTRA_GIGAWATTS = "com.example.EXTRA_GIGAWATTS";

Flags
可以用Flag來讓系統決定如何啟動activity
或是如何處理已經啟動的activity
用setFlags()的方法來使用

 

1. 官網https://developer.android.com/guide/components/intents-filters.html#Building

01.png  

arrow
arrow
    文章標籤
    Intent 組成
    全站熱搜

    RX1226 發表在 痞客邦 留言(0) 人氣()