日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android Intent-Filter匹配規則解析

瀏覽:24日期:2022-09-21 13:50:39
前言

我們都知道,活動的啟動方式有兩種:一種是顯示啟動,或者很簡單,指定一個活動的class就可以了;另外一種就是隱式啟動,這種要指定action,category,data信息,例如我們在啟動系統相機的時候??匆幌麓a:

Intent intent = new Intent('android.media.action.IMAGE_CAPTURE'); intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); startActivityForResult(intent,1);

其中的”android.media.action.IMAGE_CAPTURE”就是相機的action,這樣就可以啟動相機了。隱式啟動我們在平時也用的比較少,對于自己應用中的Activity都是直接顯示啟動了。那什么時候用到隱式啟動呢?一般是在啟動別的應用的activity的時候,例如上面講到的相機。上面講到的action,category,data就是intent-filer,也就是過濾器,篩選要啟動的activity。intentFiler有什么用?就像給自己上個標簽。例 如,你給自己上個標簽是大學生,那么,當說學生出來,?G那么就匹配到你了。這個就是intentfiler的作用。用于篩選匹配。那么這三個action,category,data究竟是什么?他們的具體匹配規則又是什么樣的?上面講到intentFiler是用于啟動別的應用,有哪些常用的intentfiler可以使用?接下來我們就來看看。

intentFilter的結構

前面講到intentFilter包含三個:action,category,data,讓我看一下代碼熟悉一下:

<intent-filter> <action android:name='huan'/> <category android:name='android.intent.category.DEFAULT'/> </intent-filter>

另外包括我們最熟悉的:

<intent-filter> <action android:name='android.intent.action.MAIN' /> <category android:name='android.intent.category.LAUNCHER' /> </intent-filter>

這三個分別表示不同的意義。你想要啟動什么樣的activity就通過設置這些屬性來啟動到對應的activity。當我們自己設置intentFiler的時候也要注意他的意義性,雖然很多可以隨便設置,但是就像變量名稱一樣,不要隨便起。

Action

action是最簡單也是最常用的。

意義:這個參數表示啟動這個活動要干嘛。例如上面相機的是android.media.action.IMAGE_CAPTURE,很明顯就是拍照功能。action的本質也是一個字符串,匹配就必須每個字符都一樣,包括大小寫。上面說過,雖然可以隨便寫這個字符串,但是要有意義。 匹配規則:action的匹配規則也很簡單,Intent中的action和intentFilter中的任意一個action匹配,那么匹配成功。但是如果Intent中的action是空的,那么匹配失敗。 Category

這個參數平時用得比較少,一般在一些比較特殊的情況才會用到

意義:這個參數平常使用的意義是表示實現這個action動作的類別,也就是可以響應這個Intent的組件類別。例如上面的category android:name=”android.intent.category.LAUNCHER”,表示這個action將會在頂級執行,什么意思呢?就是我們每次打開應用都會打開的第一個activity。 匹配規則:可以設置多個category。但是intent中的每一個category都必須和intentFilter中的其中一條category匹配才能匹配成功。 注意:給activity設置intentFilter的時候,如果沒有其他的category,必須設置category android:name=”android.intent.category.DEFAULT”這個category。原因是startActivity或者starActivityForResult這兩個方法執行的時候,如果intent中沒有category的話,那么就會自動加上”android.intent.category.DEFAULT”這個category。 Data

data是三個中最復雜的一個,顧名思義,這個參數就是用來傳遞數據的。data不同于前面兩個,他由兩部分組成:Uri+mimeType.我們先來看看data的組成:

<data android:scheme='' android:host='' android:port='' android:path='' android:pathPattern='' android:pathPrefix='' android:mimeType=''/>

data一共由7個參數組成,一起來看看分別是什么意思:

scheme:這個表示uri的模式,有最熟悉的http://這就是一種模式,另外安卓中還有比較常見的兩種是:content://和file://。有學過ContentProvider的讀者應該對content模式就很熟悉了。 host,port:host是主機,port是端口號,這兩個合稱authority。例如www.baidu.com這個應該就很熟悉了吧。在ContentProvider中表示哪一個contentProvider。 path,pathPattern,pathPrefix:這三個表示路徑信息。一是完整的路徑,二是可以用通配符來表示例如image/*,三是路徑的前綴。 mimeType:這個表示媒體類型。例如image/jpeg

講完他的結構后,有的讀者可能會發現,這個data不就是一個地址+文件類型嗎?是的,uri本身就是地址的意思。我們平時什么時候用到data呢?舉個例子,我們調用相機拍照并存儲到指定的文件夾,那么怎么讓相機知道地址呢?就是data了,我們通過intent啟動相機,并把地址放在data傳輸過去。這里的uri還涉及到安卓版本的影響有所不用,有興趣的讀者可以去了解一下。

那么,data的匹配規則是怎么樣的呢?和action是一樣的,要求intent中必須要有data,而且和intentFilter中的一個相匹配就可以匹配成功。

注意:如果在intentFilter中的data沒有設置uri,那么默認的schme就是content和file。設置intentFilter

看完了上面知道intentFilter中的三個參數怎么去匹配了,那怎么給活動設置intentFilter,怎么給intent傳輸參數知道嗎?這個比較簡單也簡單講一下:給活動設置intentFilter比較簡單,只要在AndroidManifest中設置就可以了,看示例代碼:

<activity android:name='.MainActivity'> <intent-filter> <action android:name='android.intent.action.MAIN' /> <category android:name='android.intent.category.LAUNCHER' /> </intent-filter> </activity>

給intent設置參數也不難,一個一個來看:

action:可以在新建Intent對象的時候順便寫進去,例如:Intent intent = new Intent('android.intent.action.GET_CONTENT');或者調用Intent的setAction方法:intent.setAction('android.intent.action.GET_CONTENT'); caterogy:通過intent的方法intent.addCategory(); data:這個比較特殊一點因為他有兩個部分:uri和mimeType。有三個方法:其中setType和setData分別是設置mimeType和uri的。但是這兩個方法都分別會清空另一個的數據。什么意思呢?例如我通過setData設置了一個uri,然后再通過setType設置一個mimeType,那么第一個的uri就會不見了,被刪除了。所以就有第三個方法:intent.setDataAndType。這個方法接受兩個參數,uri和mimeType,同時設置兩個參數,就不會被清除了。 常用的intentFilter

上面講到intentFilter主要是用來啟動別的應用的,例如相機,電話,那么有什么是比較常用的呢?具體可以查看這篇博客android 常用URI 值得記住。不懂得也可以百度或者評論區留言。

小結

我們上面講到intentFilter可以用來篩選要啟動的activity,同樣對于service和broadcast也是一樣,也同樣可以給他們設置intentFilter來隱式啟動對應的組件。而平時用的最多還是隱式啟動活動,特別是在調用別的應用的活動的時候。要掌握一些常見的調用,這也是很重要的。同時intentFilter的匹配規則也是很重要,熟記才不會在自己設置intentFilter的時候出錯。其中還有很多細節沒有講清楚,有疑問的讀者可以評論區留言。

以上就是Android Intent-Filer匹配規則解析的詳細內容,更多關于Android Intent-Filer匹配規則的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品成人18| 国产精品7m凸凹视频分类| 精品视频自拍| 国产精品亚洲片在线播放| 亚洲免费资源| 日韩精品一区二区三区中文字幕| 日韩国产欧美在线播放| 久久成人av| 热三久草你在线| 久久五月天小说| 美国三级日本三级久久99 | 欧美肉体xxxx裸体137大胆| 欧美一区二区三区激情视频| 美女少妇全过程你懂的久久| re久久精品视频| 在线精品一区| 国产精品videosex极品| 天堂√8在线中文| 日韩午夜一区| 欧美日韩亚洲国产精品| 国产精品亚洲四区在线观看| 国产精品原创| 亚洲欧洲午夜| 青青国产91久久久久久| 麻豆久久久久久久| 欧洲av一区二区| 蜜桃一区二区三区在线| 国产乱码精品一区二区亚洲| 日韩在线欧美| 亚洲欧美久久久| 欧美日韩亚洲一区三区| 国产一区福利| 99日韩精品| 欧美日韩一区二区三区不卡视频| 开心激情综合| 欧美日韩日本国产亚洲在线 | 99精品一区| 婷婷精品久久久久久久久久不卡| 美女视频网站久久| 午夜久久美女| 日本亚洲最大的色成网站www| 国产探花一区二区| 日韩在线精品| 日产欧产美韩系列久久99| 精品国产美女a久久9999| 激情五月综合| 久久国产精品免费一区二区三区| 成人在线视频免费| 亚洲欧美不卡| 成人亚洲一区| 亚洲精品系列| 91欧美在线| 日韩精品一区二区三区中文| 精品国模一区二区三区| 国产日韩精品视频一区二区三区| 日韩大片在线播放| 国产欧美日韩精品高清二区综合区 | 国产精品久久久久久久久久白浆| 精品一区免费| 欧美激情网址| 日韩专区一卡二卡| 成人日韩在线观看| 国产精品一区二区av日韩在线| 欧美丝袜一区| 国产精品色婷婷在线观看| 91精品国产调教在线观看| 日韩精品五月天| 久久精品国内一区二区三区水蜜桃| 日本午夜精品一区二区三区电影| 婷婷综合五月| 日韩中文欧美| 蜜桃精品视频| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 九一国产精品| 精品成人18| 欧美影院视频| 午夜在线播放视频欧美| 欧美aⅴ一区二区三区视频| 亚洲午夜久久| 午夜精品亚洲| 久久男女视频| 福利片在线一区二区| 国产探花一区二区| 日韩美女国产精品| 视频一区视频二区中文字幕| 午夜久久一区| 成人看片网站| 日韩.com| 精品精品99| 国产精品片aa在线观看| 中文字幕日韩高清在线| 中文精品视频| 欧美日韩国产在线观看网站 | 手机在线电影一区| 国产精品网址| 国产欧美一区二区色老头| 偷拍亚洲精品| 在线一区二区三区视频| 亚洲欧美日韩精品一区二区| 久久精品国产99久久| 神马久久午夜| 久久国产毛片| 久久一区二区三区电影| 久久精品国产68国产精品亚洲| 欧美aa一级| 麻豆mv在线观看| 国产成人精选| 日本蜜桃在线观看视频| а√天堂8资源在线| 国产精品国产三级国产在线观看| 精品视频国内| 日韩欧美视频专区| 群体交乱之放荡娇妻一区二区| 日韩一区三区| 欧美亚洲在线日韩| 香蕉久久精品| 亚洲欧美日本日韩| 免费人成网站在线观看欧美高清| 中国女人久久久| 亚洲毛片在线免费| 欧美日一区二区在线观看| 国产亚洲精品美女久久| 欧美国产另类| 国产精品精品| 婷婷丁香综合| 四虎国产精品免费久久| 国产精品嫩模av在线| 日本一二区不卡| 欧美性感美女一区二区 | 7777精品| 国产伦久视频在线观看| 国产精品97| 亚洲精品第一| 亚洲精品系列| 国产精品多人| 伊人久久视频| 91精品99| 欧美另类中文字幕 | 久久最新视频| 国产欧美日韩影院| 极品av在线| 国产农村妇女精品一二区 | 麻豆91精品| 国产精品一区毛片| 国产一区亚洲| 91麻豆精品激情在线观看最新 | 在线一区av| 中文字幕亚洲在线观看| 精品日韩一区| 午夜宅男久久久| 欧美韩一区二区| 久久高清免费| 五月亚洲婷婷 | 欧美中文一区二区| 日本在线成人| 天堂√中文最新版在线| 亚洲精选久久| 天堂8中文在线最新版在线| 亚洲精品伊人| 人人草在线视频| 日韩欧美中文字幕一区二区三区| 亚洲国产成人二区| 亚洲影院天堂中文av色| 91嫩草亚洲精品| 先锋亚洲精品| 高清在线一区| 日本不卡在线视频| 国产精品99免费看| 精品三区视频| 日韩高清在线不卡| 欧美一区影院| 99国产精品私拍| 91亚洲人成网污www| 日本一区二区三区中文字幕| 久久一区二区中文字幕| 鲁大师精品99久久久| 视频一区在线视频| 久久中文字幕av| 国产一区二区精品福利地址| 午夜在线精品偷拍| 欧美日韩一二| 日韩理论片av| 精品国产网站| 欧美日本不卡| 自拍自偷一区二区三区| 不卡在线一区二区| 色老板在线视频一区二区| 免费在线欧美黄色| 91亚洲精品在看在线观看高清| 欧美专区18| 黄色不卡一区| 日韩和的一区二在线| 久久久久久自在自线| 国产麻豆一区二区三区| 丝瓜av网站精品一区二区| 在线国产一区二区| 欧美日韩黑人| 国产一区日韩一区| 久久婷婷久久| 九色porny丨国产首页在线|