Android使用Intent Filter來響應隱式Intent

來源:互聯網
上載者:User

轉自http://justjavac.javaeye.com/blog/698026

 

    如果一個
Intent
請求在一片資料上執行一個動作,
Android
如何知道哪個應用程式(和組件)能用來響應這個請求呢?
Intent Filter就是
用來註冊
Activity

Service

Broadcast Receiver
具有能在某種資料上執行一個動作的能力。

    使用
Intent Filter
,應用程式組件告訴
Android
,它們能為其它程式的組件的動作請求提供服務,包括同一個程式的組件、本地的或第三方的應用程式。為了註冊一個應用程式組件為
Intent
處理者,在組件的
manifest
節點添加一個
intent-filter
標籤。

    在
Intent Filter
節點裡使用下面的標籤(關聯屬性),你能指定組件支援的動作、種類和資料:


 action

使用
android:name
特性來指定對響應的動作名。動作名必須是獨一無二的字串,所以,一個好的習慣是使用基於
Java
包的命名方式的命名系統。


 category

使用
android:category
屬性用來指定在什麼樣的環境下動作才被響應。每個
Intent Filter
標籤可以包含多個
category
標籤。你可以指定自訂的種類或使用
Android
提供的標準值,如下所示:

 


 ALTERNATIVE

你將在這章的後面所看到的,一個
Intent Filter
的用途是使用動作來幫忙填入操作功能表。
ALTERNATIVE
種類指定,在某種資料類型的項目上可以替代預設執行的動作。例如,一個連絡人的預設動作時瀏覽它,替代的可能是去編輯或刪除它。


 SELECTED_ALTERNATIVE


ALTERNATIVE
類似,但
ALTERNATIVE
總是使用下面所述的
Intent
解析來指向單一的動作。SELECTED_ALTERNATIVE在需要一個可能性列表時使用。

 


 BROWSABLE

指定在瀏覽器中的動作。當
Intent
在瀏覽器中被引發,都會被指定成
BROWSABLE
種類。

 


 DEFAULT

設定這個種類來讓組件成為
Intent Filter
中定義的
data
的預設動作。這對使用顯式
Intent
啟動的
Activity
來說也是必要的。

 


 GADGET

通過設定
GADGET
種類,你可以指定這個
Activity
可以嵌入到其他的
Activity
來允許。

 


 HOME

HOME Activity
是裝置啟動(登陸螢幕)時顯示的第一個
Activity
。通過指定
Intent Filter

HOME
種類而不指定動作的話,你正在將其設為本地
home
畫面的替代。



 LAUNCHER

使用這個種類來讓一個
Activity
作為應用程式的啟動項。


 data

data
標籤允許你指定組件能作用的資料的匹配;如果你的組件能處理多個的話,你可以包含多個條件。你可以使用下面屬性的任意組合來指定組件支援的資料:

 


 android:host

指定一個有效主機名稱(例如,
com.google
)。

 


 android:mimetype

允許你設定組件能處理的資料類型。例如,<type android:value=”vnd.android.cursor.dir/*”/>能匹配任何
Android
遊標。

 


 android:path

有效地
URI
路徑值(例如,
/transport/boats/
)。

 


 android:port

特定主機上的有效連接埠。

 


 android:scheme

需要一個特殊的圖示(例如,
content

http
)。

 

接下來的程式碼片段顯示了如何配置
Activity

Intent Filter
,使其以在特定資料下的預設的或可替代的動作的身份來執行
SHOW_DAMAGE動作。(建立地震內容將在下一章節。)

 

  1. <activity android:name=”.EarthquakeDamageViewer” 
    android:label=”View Damage”>  
  2.         <intent-filter>  
  3.               <action  android:name=”com.paad.earthquake.intent.action.SHOW_DAMAGE” /> 
  4.               <category android:name=”android.intent.category.DEFAULT” />
  5.               <category android:name=”android.intent.category.ALTERNATIVE_SELECTED” />  
  6.               <data android:mimeType=”vnd.earthquake.cursor.item/*” />  
  7.         </intent-filter>  
  8. </activity> 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.