-
語法(SYNTAX):
<dataandroid:host="string"
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string"/>包含於(CONTAINED IN):
<intent-filter>
說明(DESCRIPTION):
這個元素用於把數據規範添加到一個Intent過濾器中,數據規範能夠只是數據類型(mimeType屬性)、或數據位置標識(URI),也可以是數據類型和數據位置標識(URI)。一個URI(如下格式)被分成幾個獨立的屬性來分別指定:
scheme://host:port/path or pathPrefix or pathPattern
這些屬性是可選的,但也是相互依賴的。如果沒有給Intent過濾器指定scheme屬性,那麼所有其他的URI屬性都會被忽略。如果沒有給過濾器指定host屬性,那麼port屬性和所有的路徑屬性都會被忽略。
包含在同一個<intent-filter>元素中所有的<data>元素只會對這個過濾器起作用,例如:
<intent-filter . . . >
<data android:scheme="something" android:host="project.example.com" />
. . .
</intent-filter>等同於
<intent-filter . . . >
<data android:scheme="something" />
<data android:host="project.example.com" />
. . .
</intent-filter>可以在<intent-filter>元素內放置多個<data>元素,來給過濾器設置多個數據選項。<data>元素的屬性沒有默認值。
屬性(ATTRIBUTES):
android:host
這個屬性用戶定義URI授權的主機部分,除非給過濾器也指定了<data>元素的scheme屬性,否則這個屬性沒有意義。
注意:在Android框架中,主機名的匹配是大小寫敏感的,跟RFC格式不一樣。因此,要始終使用小寫字母來指定主機名。
android:mimeType
這個屬性用於設定數據的MIME類型,如:image/jpeg或audio/mpeg4-generic。其子類型可用星號通配符(*)來代替,指示能夠跟任何子類型匹配。
注意:在Android框架中,MIME類型的匹配是大小寫敏感的,跟RFC格式不一樣。因此,要始終使用小寫字母來指定MIME類型。
android:path
android:pathPrefix
android:pathPattern
這個三個屬性用於指定URI的路徑部分。Path屬性指定一個完整的路徑,這個路徑會跟Intent對象中的路徑進行匹配。PathPrefix屬性只指定了部分路徑,它會跟Intent對象中的路徑初始部分匹配。pathPattern屬性指定一個要跟Intent對象中的路徑進行匹配的完整路徑,但是這個路徑中可以包含下列通配符:
1. 星號(*)通配符,路徑中的*星號代表任意多個星號之前的那個字符,如a*,可跟a、aa、aaa、aaaa、...字符串匹配。
2. 點跟星號的組合(.*)通配符,它可以跟任意字符串進行匹配,如.*html,可以跟abchhtml、chtml、html、dssf.html、…等字符串匹配。
因爲系統讀取XML中的字符串時,會把’\’符號作爲強制轉義字符,因此就需要兩次轉義。例如,符號”*”要被寫成”\\*”,符號’\’要被寫成”\\\\”。這與Java代碼中的寫法基本相同。
有關這三種模式的更多信息,請看PatternMatcher類中的PATTERN_LITERAL、PATTERN_PREFIX、PATTERN_SIMPLE_GLOB的說明。
http://developer.android.com/reference/android/os/PatternMatcher.html
android:port
這個屬性用於定義URI授權的端口部分。只有給過濾器指定了scheme和host屬性時,這個屬性纔有意義。
android:scheme
這個屬性用於設定URI的scheme部分。它是給指定URI設置的最基本的屬性,至少要給過濾器設置一個scheme屬性,否則,其他的URI屬性就沒有意義了。
scheme屬性值沒有”:”符號結尾(如,http,而不是http: )
如果過濾器有一個數據類型(設置了mimeType屬性),但沒有設置scheme屬性,那麼系統就會假定scheme是content:和file:
注意:在Android框架中,scheme的匹配時大小寫敏感的,跟RFC格式不一樣。因此,要始終使用小寫字母來指定scheme。
被引入(INTRODUCED IN):
API Level 1
摘自 FireOfStar的專欄
AndroidManifest.xml文件詳解(data)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.