Activity隐式启动IntentFilter
生活随笔
收集整理的這篇文章主要介紹了
Activity隐式启动IntentFilter
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
時(shí)間:2016年3月4日09:54:02
IntentFilter過濾信息:action、category、data
action:? ? 1.Intent中的action必須能夠和過濾條件中的action匹配,過濾條件中可以有多個(gè)action。
? ? 2.Intent中如果設(shè)置多個(gè)action則過濾條件中必須至少有同樣數(shù)量的action。
? ? 3.如果Intent設(shè)置action但是并沒有相應(yīng)的過濾條件與之匹配則會(huì)報(bào)ActivityNotFoundException異常。? ? 4.Action區(qū)分大小寫。
? ? 5.intent必須要書寫設(shè)置action。(和category不同之處)。
category:? ? 1.intent中可以不書寫category,因?yàn)樵谑褂胹tartActivity或者startActivityForResult時(shí)會(huì)默認(rèn)給category添加“android.intent.category.DEFAULT”這個(gè)category。
? ? 2.intent中如果出現(xiàn)了category,不管有幾個(gè)對(duì)于沒一個(gè)category來說過濾條件中都必須有已經(jīng)定義的相同的category。
data:? ? 1.data有兩部分組成,mimeType和URI。mimeType指媒體類型,比如image/jpeg,video/*等,URI結(jié)構(gòu)如下:
? ??? ??? ? <scheme>://<host>:<port>/[<path>]|[<pathPrefix>]|[<pathPattern>]
? ??? ??? ? Scheme:URI的模式,比如http、file、content等,如果URI沒有指定scheme,那么URI無效。
? ??? ??? ? Host:URI的主機(jī)名,比如www.baidu.com,如果host未指定,那么URI無效。 ? ??? ??? ??? ? Port:URI的端口號(hào),比如80,僅當(dāng)Scheme和Host指定時(shí)才有效。
? ??? ??? ? Path:表示完整的路徑信息。
?? ??? ??? ??? ?PathPattern:表示完整的路徑信息,但是可以使用通配符。? ??? ??? ? PathPrefix:路徑的前綴信息。
? ??? ?
? ? 2.如果僅指定了mimeType但是未指定URI,系統(tǒng)默認(rèn)添加,默認(rèn)值為content 或 file。? ? 3.如果要指定完整地data,即同時(shí)包含mimeType和URI,必須使用setDataAndType()方法,例如:? ??? ??? ??? ??intent.setDataAndType(Uri.parse("file://abc"),"image/*"); ? ? 4.如果先調(diào)用setData再調(diào)用setType這兩個(gè)方法會(huì)清空彼此的相關(guān)值。
可以通過PackageManager的resolveActivity(Intent intent , Int flag)對(duì)是否有匹配的Activity進(jìn)行判斷,如果為null即無匹配。也可以說使用PackageManager的queryIntentActivities(Intent intent, int flag)進(jìn)行匹配,返回值為L(zhǎng)ist<ResolveInfo>。【int flag 需要使用PackageManager.MATCH_DEFAULT_ONLY】
? ??
來自為知筆記(Wiz)
IntentFilter過濾信息:action、category、data
action:? ? 1.Intent中的action必須能夠和過濾條件中的action匹配,過濾條件中可以有多個(gè)action。
? ? 2.Intent中如果設(shè)置多個(gè)action則過濾條件中必須至少有同樣數(shù)量的action。
? ? 3.如果Intent設(shè)置action但是并沒有相應(yīng)的過濾條件與之匹配則會(huì)報(bào)ActivityNotFoundException異常。? ? 4.Action區(qū)分大小寫。
? ? 5.intent必須要書寫設(shè)置action。(和category不同之處)。
category:? ? 1.intent中可以不書寫category,因?yàn)樵谑褂胹tartActivity或者startActivityForResult時(shí)會(huì)默認(rèn)給category添加“android.intent.category.DEFAULT”這個(gè)category。
? ? 2.intent中如果出現(xiàn)了category,不管有幾個(gè)對(duì)于沒一個(gè)category來說過濾條件中都必須有已經(jīng)定義的相同的category。
data:? ? 1.data有兩部分組成,mimeType和URI。mimeType指媒體類型,比如image/jpeg,video/*等,URI結(jié)構(gòu)如下:
? ??? ??? ? <scheme>://<host>:<port>/[<path>]|[<pathPrefix>]|[<pathPattern>]
? ??? ??? ? Scheme:URI的模式,比如http、file、content等,如果URI沒有指定scheme,那么URI無效。
? ??? ??? ? Host:URI的主機(jī)名,比如www.baidu.com,如果host未指定,那么URI無效。 ? ??? ??? ??? ? Port:URI的端口號(hào),比如80,僅當(dāng)Scheme和Host指定時(shí)才有效。
? ??? ??? ? Path:表示完整的路徑信息。
?? ??? ??? ??? ?PathPattern:表示完整的路徑信息,但是可以使用通配符。? ??? ??? ? PathPrefix:路徑的前綴信息。
? ??? ?
? ? 2.如果僅指定了mimeType但是未指定URI,系統(tǒng)默認(rèn)添加,默認(rèn)值為content 或 file。? ? 3.如果要指定完整地data,即同時(shí)包含mimeType和URI,必須使用setDataAndType()方法,例如:? ??? ??? ??? ??intent.setDataAndType(Uri.parse("file://abc"),"image/*"); ? ? 4.如果先調(diào)用setData再調(diào)用setType這兩個(gè)方法會(huì)清空彼此的相關(guān)值。
可以通過PackageManager的resolveActivity(Intent intent , Int flag)對(duì)是否有匹配的Activity進(jìn)行判斷,如果為null即無匹配。也可以說使用PackageManager的queryIntentActivities(Intent intent, int flag)進(jìn)行匹配,返回值為L(zhǎng)ist<ResolveInfo>。【int flag 需要使用PackageManager.MATCH_DEFAULT_ONLY】
? ??
來自為知筆記(Wiz)
轉(zhuǎn)載于:https://www.cnblogs.com/yuzhongzheng/p/5241338.html
總結(jié)
以上是生活随笔為你收集整理的Activity隐式启动IntentFilter的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS2010/MFC编程入门之二十(常用
- 下一篇: 字典与文本文档的转换