天天看點

IntentIntent

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 with

startActivity

to launch an

Activity

,

broadcastIntent

to send it to any interested

BroadcastReceiver

components, and

Context.startService(Intent)

or

Context.bindService(Intent, ServiceConnection, int)

to communicate with a background

Service

.

Intent

用以在

APP

Activity

Service

Broadcast

間的通信,包含了一系列抽象的操作描述,具有幾大功能——啟動

Activity

、啟動

Service

、發送

Broadcast

IntentIntent

2. Intent 屬性

主要屬性如下圖:

IntentIntent
  • 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

    ,如下圖。
    IntentIntent
    1. 設定

      Action

      intent.setAction(<Intent.action>)

    2. 設定

      Data

      intent.setData(<Uri data>)

    3. 設定完畢後

      startActivity(intent)

      即可

      注意,涉及到權限問題,需要先在

      mainfest

      中注冊權限。
  • Action

    Category

    用以啟動其他

    Activity

    1. 設定

      Action

      intent.setAction(<Intent.action>)

    2. 設定

      Category

      intent.addCategory (String category)

    3. 設定完畢後

      startActivity(intent)

      即可
  • Extras

    多個Activity資料交換時,在Intent中借助

    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。

IntentIntent

4. Intent 過濾器

根據Activity的

action

catogory

等屬性,對于

Intent

進行篩選、過濾,用以隐式

Intent

IntentIntent
  • 配置:通過

    <intent-filter>

    标簽在

    AndroidManiFest.xml

    檔案中配置
    IntentIntent
    組合使用參考

    Intent屬性