日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

3.1 Android组件intent filter

發布時間:2024/9/20 Android 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3.1 Android组件intent filter 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

3.1.0 Intent filter基本概念

前面章節我們說到了Intent,Intent對象中除了ComponentName可以直接指定目標組件外,其它的屬性都無法直接指定目標組件。當然我們這里不指使用Activity的內部方法如startActivity或者intent的setClass方法可以指定目標組件。單獨的屬性是無法確定目標組件的。那Android怎么辦呢?Android如何根據一個intent對象找到目標組件呢?Intent在系統中,從概念上分為顯示intent和隱式intent。其中顯示intent,就是前面所說的通過指定intent的目標組件名稱來實現,這種intent需要知道目標組件名稱。另一種所謂隱式intent,這種intent用intent filter進行處理。Android對每個組件設置intent filter來訂閱intent 消息屬性。這個有點類似于Linux IPC消息,發送者將消息發到Kernel,然后由組件通過intent filter從Kernel上取得消息。

顯示intent和隱式intent在具體應用中,通常是針對不同的場景來進行應用,如顯示intent通常是在一個應用的內部組件之間,這樣可以知道具體目標組件的類名。而隱式intent就不一定了,通常可以打開如電話、短信等基礎Android應用。前面我們說intent filter是針對隱式intent,為了組件能夠匹配到具體合適的intent。Android內部的intent解析機制是通過查找已注冊在AndroidManifest.xml中的所有IntentFilter及其定義的Intent,最終找到匹配的intent。在這個解析過程中,Android通過intent的Action、Category和Data這三個屬性來進行判斷,并且是都滿足的情況才可啟動這個組件。如果一個filter的Action可以,但是category不對,也不行的。

如上圖所示,對intent filter來說,進行ACTION, DATA,CATEGORY的分析比較是一個intent filter的基本機制。下面分述如下:

【1】Action

如果一個組件想要接收某個intent,那么它的intent filter中action元素必有與這個intent相同的action(在定義action的前提下)。Intentfilter中定義的action,不再像前面使用縮寫的常量,需要使用android.intent.action.EDIT之類。創建一個Intent filter非常簡單,只需要在Activity 的子元素中定義,如下圖所示:

接著定義Activity和Intent.將intent的Action設為其中一個Action.

【2】Category

同前面Action一樣,一個組件想要響應一個intent就必須與這個intent具有相同的Category,但是通常有些intent對DEFAULT Category 都不設置,默認就是這個Category,但是對Intent filter那是不可以的,一定要有DEFAULT Category設置。如前面所述,Android 2.2以后,對intent filter要求更加嚴格,也就是說,前面的Action一定要存在。否則無法查找到相應的組件。如下所示定義一個Intent的一個自定義ACTION和一個CATEGORY。

接著再定義一個intent filter用來匹配對應用的intent.

?

【3】Data

Data屬性是Android要訪問的數據,和前面兩個屬性一樣,在intent filter中也可以聲明Data屬性。聲明Data屬性需要同時指定訪問數據的URI和MIME類型。在Intent filter中Data 屬性分為四個獨立的屬性進行設置,共同組成一個URI:scheme://host:port/path

從這里可以看出intent filter在匹配data時候的一些規則的不同,它是以intent filter為最大集,比喻說intent filter定義了http://www.sina.com.cn,但實際上它是可以匹配http://www.sina.com.cn/boke等子路徑的。同樣對MIME類型,更是如此,它可以支持通配符如"text/*”或者“audio/*”等。Data屬性匹配規則如下:

【1】如果intent 對象中沒有包含data,<intent-filter>列表中也沒有包含DATA,這種情況下一般通過ACTION來匹配。

【2】如果Intent 對象包含URI但是沒包括類型,并且類型不能從URI中自動識別,那么<intent-filter>列表中也只能包含URI,才能匹配

【3】相反,如果Intent對象只包含類型,不包含URI,那么<intent-filter>也只能含類型,不含 URI

【4】如果Intent 對象中既包含URI又包括Type,那么在<intent-filter>中也必須二者都包含。

創建一個Intent時設置data 屬性,如下所示,使用Uri類進行parse.

在<intent-filter>中使用data屬性進行匹配。

3.1.1 Intent filter 類及packageManager

前面我們著重談到的都是通過在xml文件中定義intent filter,實際上intent filter也是一個類,如下圖所示。它可以在receiver中直接注冊使用。

從類中,你可以使用add方法將相關屬性填入其中。

轉載于:https://blog.51cto.com/acreep/677525

總結

以上是生活随笔為你收集整理的3.1 Android组件intent filter的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 激情福利 | 亚洲一区二区在线 | 亚洲国产精品一区二区久久hs | 日韩欧美网址 | 久久av高潮av无av萌白 | 欧美日韩一区二区三区免费 | 女人床技48动态图 | 午夜精品偷拍 | 超碰在线免费播放 | 神马久久久久久久久久 | 欧美一区二区日韩一区二区 | 男女福利视频 | 国产一区二区小说 | 欧美日视频 | 国产寡妇亲子伦一区二区三区四区 | 日日摸日日碰 | www.国产视频.com | 欧美性猛交xxxx乱大交3 | 国模在线| 在线免费观看av网站 | 羽月希奶水一区二区三区 | 香蕉视频在线免费看 | 二色av | 嫩草天堂| 亚洲色图.com | 精品麻豆视频 | 四虎在线免费 | 97久久久久久久久久 | youjizz自拍| 青青草精品在线 | 欧美性猛片aaaaaaa做受 | 日韩欧美国产一区二区在线观看 | 蝌蚪网在线视频 | 欧美色图19p | 国产男男chinese网站 | 成人午夜剧场视频网站 | 国内精品偷拍 | 毛片毛片 | 国产精品熟女久久久久久 | 日韩色图在线观看 | 无码人妻丰满熟妇啪啪网站 | 光棍天堂av | 国产欧美在线观看视频 | 人日人视频 | а√天堂中文在线资源8 | jzzijzzij亚洲成熟少妇 | 免费美女视频网站 | 亚洲国产免费av | 午夜男人网 | 色图网址| 四虎一国产精品一区二区影院 | 黄色午夜 | 91精品国产综合久久久蜜臀图片 | 色伊人久久 | 精品黑人一区二区三区观看时间 | 师生出轨h灌满了1v1 | 九九色精品| 亚洲精品wwww | 欧美黑吊大战白妞 | 日韩一级欧美一级 | 亚洲大片免费看 | 影音先锋在线视频 | 狠狠狠狠狠干 | 中文字幕三级视频 | 亲子乱子伦xxxx | 亚洲a√ | 欧美日韩一区二区三区在线视频 | 精品久久久久久中文字幕人妻最新 | 成人入口| 超碰超碰 | 国产黄色一区二区三区 | 亚洲免费观看av | 91视频最新 | 五月婷婷六月婷婷 | 9i免费看片黄 | 国产美女特级嫩嫩嫩bbb | 婷婷人体 | 一级片黄色片 | 青春草国产视频 | 毛片xxx| 亚洲国产精品一区二区尤物区 | www夜夜操| 国产精品嫩草影院桃色 | 久久久久久久久久久久国产精品 | 2018狠狠干 | 久久久久免费精品视频 | 中文字幕另类 | 男女www | 欧美日韩久 | 久久黄色片视频 | 三年中文在线观看中文版 | 国产一级免费在线观看 | 黄网在线观看免费 | 99久| 男人天堂手机在线 | 男人天堂视频网站 | 国产精品-区区久久久狼 | 国产成人精品电影 | 欧美在线aa |