<intent-filter>
<intent-filter android:icon="drawable resource"
android:label="string resource"
android:priority="integer" >
<action>
<category>
<data>
</intent-filter>
過濾器
priority:優先級默認是0,數字遇到優先級越高
<action>
<action android:name="string" />
動作
1.<intent-filter>元素必須包含一個或多個<action>元素
2.對於定義的操作,最好使用應用程序的包名作為前綴,以確保惟一性
<action android:name="string" />
動作
1.<intent-filter>元素必須包含一個或多個<action>元素
2.對於定義的操作,最好使用應用程序的包名作為前綴,以確保惟一性
<category>
<category android:name="string" />
類別
1.為了接收隱式意圖,您必須在意圖過濾器中包含CATEGORY_DEFAULT類別
2.方法startActivity()和startActivityForResult()將所有意圖視為聲明了CATEGORY_DEFAULT類別。
如果您沒有在intent過濾器中聲明它,就不會有隱式intent解析到您的活動。
3.自定義類別應該使用包名作為前綴,以確保它們是惟一的。
android.intent.category.ALTERNATIVE :activity 是用戶正在瀏覽的數據的一個可選操作
android.intent.category.BROWSABLE:能夠被瀏覽器安全使用的 activities 必須支持這個類別
android.intent.category.DEFAULT:如果 activity 是對數據執行確省動作(點擊, center press)的一個選項,需要設置這個類別
android.intent.category.DEVELOPMENT_PREFERENCE :activity 是一個設置面板 (development preference panel)
android.intent.category.EMBED:能夠在上級(父)activity 中運行。
android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST:被用來作為測試儀器測試框架下的代碼
android.intent.category.GADGET:這個 activity 可以被嵌入宿主 activity (activity that is hosting gadgets)
android.intent.category.HOME:主屏幕 (activity),設備啟動后顯示的第一個 activity
android.intent.category.LAUNCHER:Activity 應該被顯示在頂級的 launcher 中
android.intent.category.PREFERENCE:activity是一個設置面板 (preference panel)
android.intent.category.SAMPLE_CODE:被用來作為一個示例代碼示例(不是普通用戶體驗的部分)
android.intent.category.SELECTED_ALTERNATIVE:對於被用戶選中的數據,activity 是它的一個可選操作
android.intent.category.TEST:作為測試目的使用,不是正常的用戶體驗的一部分
android.intent.category.UNIT_TEST:應該被用作單元測試(通過 test harness 運行)
android.intent.category.WALLPAPE:這個 activity 能過為設備設置牆紙
android.intent.category.TAB:這個 activity 應該在 TabActivity 中作為一個 tab 使用
<data>
<data android:scheme="string"
android:host="string"
android:port="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:mimeType="string" />
<data android:scheme="string"
android:host="string"
android:port="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:mimeType="string" />
URI格式:[scheme:][//host:port][path]
如:http://192.168.1.1:8080/test/aabb
如:http://192.168.1.1:8080/test/aabb
scheme:
URI的scheme部分。這是指定URI的最小基本屬性;必須為過濾器設置至少一個scheme屬性,否則其他URI屬性都沒有意義。
比如上面的http就是scheme。
host:
比如上面的192.168.1.1就是host
port:
比如上面的8080就是port
path:
用來匹配完整的路徑: 比如上面的/test/aabb就是path
pathPattern:
用表達式來匹配整個路徑。
pathPrefix:
用來匹配路徑的開頭部分: 比如上面的將pathPrefix 設置為/test 就能進行匹配了
mimeType:
數據類型
注意:與正式的RFC MIME類型不同,Android框架中的MIME類型匹配是區分大小寫的。因此,您應該始終使用小寫字母指定MIME類型。
mimeType 也是是用來匹配 Intent 的。比如,當你使用 Intent.setType("text/plain") ,
那么系統將會匹配到所有注冊 android:mimeType="text/plain" 的 Activity,
這里需要十分注意的是 Intent.setType(), Intent.setData,Intent.setDataAndType() 這三個方法!
setType 調用后設置 mimeType,然后將 data 置為 null;
setData 調用后設置 data,然后將 mimeType 置為 null;
setDataAndType 調用后才會同時設置 data 與 mimeType。
URI的scheme部分。這是指定URI的最小基本屬性;必須為過濾器設置至少一個scheme屬性,否則其他URI屬性都沒有意義。
比如上面的http就是scheme。
host:
比如上面的192.168.1.1就是host
port:
比如上面的8080就是port
path:
用來匹配完整的路徑: 比如上面的/test/aabb就是path
pathPattern:
用表達式來匹配整個路徑。
pathPrefix:
用來匹配路徑的開頭部分: 比如上面的將pathPrefix 設置為/test 就能進行匹配了
mimeType:
數據類型
注意:與正式的RFC MIME類型不同,Android框架中的MIME類型匹配是區分大小寫的。因此,您應該始終使用小寫字母指定MIME類型。
mimeType 也是是用來匹配 Intent 的。比如,當你使用 Intent.setType("text/plain") ,
那么系統將會匹配到所有注冊 android:mimeType="text/plain" 的 Activity,
這里需要十分注意的是 Intent.setType(), Intent.setData,Intent.setDataAndType() 這三個方法!
setType 調用后設置 mimeType,然后將 data 置為 null;
setData 調用后設置 data,然后將 mimeType 置為 null;
setDataAndType 調用后才會同時設置 data 與 mimeType。
匹配符號:
“*” 用來匹配0次或更多,如:“a*” 可以匹配“a”、“aa”、“aaa”...
“.” 用來匹配任意字符,如:“.” 可以匹配“a”、“b”,“c”...
因此 “.*” 就是用來匹配任意字符0次或更多,如:“.*html” 可以匹配 “abchtml”、“chtml”,“html”,“sdf.html”...
轉義:
因為當讀取 Xml 的時候,“\” 是被當作轉義字符的(當它被用作 pathPattern 轉義之前),
因此這里需要兩次轉義,讀取 Xml 是一次,在 pathPattern 中使用又是一次。
如:“*” 這個字符就應該寫成 “\\*”,“\” 這個字符就應該寫成 “\\\\”。
“*” 用來匹配0次或更多,如:“a*” 可以匹配“a”、“aa”、“aaa”...
“.” 用來匹配任意字符,如:“.” 可以匹配“a”、“b”,“c”...
因此 “.*” 就是用來匹配任意字符0次或更多,如:“.*html” 可以匹配 “abchtml”、“chtml”,“html”,“sdf.html”...
轉義:
因為當讀取 Xml 的時候,“\” 是被當作轉義字符的(當它被用作 pathPattern 轉義之前),
因此這里需要兩次轉義,讀取 Xml 是一次,在 pathPattern 中使用又是一次。
如:“*” 這個字符就應該寫成 “\\*”,“\” 這個字符就應該寫成 “\\\\”。