成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

Android Intent-Filter匹配規(guī)則解析

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

我們都知道,活動的啟動方式有兩種:一種是顯示啟動,或者很簡單,指定一個活動的class就可以了;另外一種就是隱式啟動,這種要指定action,category,data信息,例如我們在啟動系統(tǒng)相機的時候。看一下代碼:

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

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

intentFilter的結(jié)構(gòu)

前面講到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就通過設(shè)置這些屬性來啟動到對應(yīng)的activity。當我們自己設(shè)置intentFiler的時候也要注意他的意義性,雖然很多可以隨便設(shè)置,但是就像變量名稱一樣,不要隨便起。

Action

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

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

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

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

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

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

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

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

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

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

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

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

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

給intent設(shè)置參數(shù)也不難,一個一個來看:

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

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

小結(jié)

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

以上就是Android Intent-Filer匹配規(guī)則解析的詳細內(nèi)容,更多關(guān)于Android Intent-Filer匹配規(guī)則的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Android
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
久久久久久久久久看片| 亚洲免费观看高清完整版在线| 成人app在线观看| 91精品国产色综合久久不卡蜜臀| 成人免费视频视频| 中文字幕欧美国产| 国产日韩亚洲| 久久精品99久久久| 欧美电影免费观看高清完整版在线| 成+人+亚洲+综合天堂| 欧美日韩国产片| 99久久精品免费看| 一区二区在线观看视频 | 国产高清视频一区| 国产日韩欧美a| 国产日韩专区| 狠狠色丁香久久婷婷综| 精品久久一区二区三区| 好吊日精品视频| 亚洲不卡av一区二区三区| 欧美日韩精品欧美日韩精品| 丁香婷婷综合激情五月色| 91成人免费在线| 六月丁香综合在线视频| 欧美v日韩v国产v| 亚洲人成在线影院| 蜜桃视频在线一区| 国产欧美日本一区视频| 亚洲综合视频一区| 国产精品 日产精品 欧美精品| 欧美激情在线一区二区三区| 免费中文字幕日韩欧美| 国产成人亚洲综合色影视| 亚洲欧美怡红院| 91久久国产综合久久| 91在线视频播放地址| 亚洲成人手机在线| 欧美成人三级电影在线| 中文亚洲字幕| 成人在线一区二区三区| 亚洲视频精选在线| 欧美一区二区三区思思人| 亚洲精品护士| 国产成人精品亚洲777人妖| 一区二区三区免费| 精品电影一区二区| 久久影院亚洲| 欧美日产一区二区三区在线观看| 国产精品福利影院| 久久亚洲欧美| 欧美大片一区| 美美哒免费高清在线观看视频一区二区 | 亚洲伦伦在线| 韩国av一区二区三区在线观看| 欧美国产精品中文字幕| 欧美丝袜自拍制服另类| 不卡的电视剧免费网站有什么| 亚洲图片欧美视频| 欧美一区二区三区婷婷月色| 国产精品视频免费一区| 99久精品国产| 精品一区二区三区香蕉蜜桃| 一区二区三区免费看视频| 日韩精品中文字幕一区| 久久久久久久久久久一区| 99久久久精品| 国产在线国偷精品免费看| 亚洲激情网站免费观看| 欧美日韩电影一区| 日韩精品中午字幕| 国产在线一区观看| 97国产精品videossex| 六月婷婷久久| 精品国产乱子伦一区| 成人欧美一区二区三区1314| 老司机精品视频在线| 粉嫩aⅴ一区二区三区四区五区| 国产精品av久久久久久麻豆网| 天天操天天色综合| 日韩一级视频免费观看在线| 在线一区亚洲| 欧美日韩网址| 99视频一区二区三区| 国产一区啦啦啦在线观看| 最近日韩中文字幕| 26uuu精品一区二区| 在线区一区二视频| 久久久久一区二区三区| 欧美日韩在线播放一区二区| 成人黄页毛片网站| 亚洲成人动漫在线观看| 亚洲免费高清视频在线| 国产精品免费aⅴ片在线观看| 日韩欧美国产一区二区三区| 欧美乱妇23p| 国内自拍视频一区二区三区 | 美女脱光内衣内裤视频久久网站 | 精品国产露脸精彩对白 | 26uuu另类欧美亚洲曰本| 欧美日韩免费观看一区二区三区| 色综合久久99| 久久天天综合| 一区二区三区四区五区视频| 亚洲成人资源| 欧美日韩系列| 黄色亚洲在线| 在线看片欧美| 亚洲黄色在线| 日韩视频在线播放| 国产综合激情| 亚洲另类视频| 久久精品动漫| 欧美日韩一区二区在线视频| 欧美私人免费视频| 在线播放中文一区| 日韩欧美一区二区在线视频| www国产成人| 国产欧美日韩视频在线观看| 国产精品萝li| 亚洲视频图片小说| 91福利在线观看| 成人国产亚洲欧美成人综合网| 中文字幕亚洲一区二区va在线| 91视频91自| 亚洲男人的天堂av| 91成人在线免费观看| 国产一区二区三区综合| 国产日韩欧美激情| 一区二区91| 蓝色福利精品导航| 久久久五月婷婷| 欧美日韩喷水| 欧美激情在线一区二区| 亚洲欧美另类图片小说| 丝袜亚洲另类丝袜在线| 国产综合色视频| 99久久99久久精品国产片果冻 | 欧美综合在线视频| 日韩精品一区二区三区视频播放 | 国产欧美日本| 欧美少妇性性性| 精品国偷自产国产一区| 国产精品久久久久婷婷二区次| 亚洲午夜精品网| 国产一区视频在线看| 91看片淫黄大片一级| 亚洲欧美日产图| 欧美精品v日韩精品v韩国精品v| 国产视频亚洲色图| 视频一区中文字幕| 成人涩涩免费视频| 一区二区三区精品国产| 欧美日韩一区二区在线观看| 久久久91精品国产一区二区精品| 亚洲女厕所小便bbb| 国产乱码精品一区二区三区av | 欧美久久在线| 色婷婷狠狠综合| 久久久久亚洲蜜桃| 丝袜国产日韩另类美女| 91丨porny丨国产| 免费日韩一区二区| 精品国产一区二区国模嫣然| 亚洲午夜精品久久久久久久久| 国产 欧美在线| 久久福利精品| 久久色.com| 日韩在线一区二区| 欧美a级在线| 欧美影院精品一区| 1000部国产精品成人观看| 蜜桃精品在线观看| 国产综合视频| 91精品欧美综合在线观看最新| 亚洲免费观看视频| 国产美女精品一区二区三区| 影音先锋国产精品| 精品免费99久久| 日本亚洲最大的色成网站www| 欧美精品国产| 在线播放国产精品二区一二区四区| 亚洲三级在线免费观看| 成人网在线播放| 在线精品国精品国产尤物884a| 日韩一区中文字幕| 99精品在线免费| 欧美高清dvd| 日韩成人一级大片| 亚洲高清在线| 久久精品亚洲国产奇米99| 国产一区二区三区免费播放| 久久国产主播精品| **网站欧美大片在线观看| 成人做爰69片免费看网站| 在线欧美日韩国产| 亚洲一区二区三区三| 精品99视频| 国产日韩精品一区二区三区| 久久国产三级精品| 一本久久精品一区二区|