精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

專家專欄:Android中的Intent Filter與安全

原創
移動開發 Android
本文為51CTO專家李洋老師的專欄文章《Android中的Intent Filter與安全》:Intent是Android應用程序核心組件之間通信和傳遞信息的核心機制。與之相關的IntentFilter也具有相關的安全機制(測試)來進行約束。本文將對其進行詳細介紹。

一、Intent和IntentFilter簡介

一個應用程序的三個核心組件(活動,服務和廣播接收器)都是通過消息即意圖(Intents)來激活的。Intent消息傳送是相同或不同應用中組件運行時晚綁定的一種機制。意圖本身(一個意圖對象)是一個包含被執行操作抽象描述的被動的數據結構。或,對于廣播而言,是某件已經發生并被聲明的事情的描述。存在如下幾種不同的機制來傳送意圖到每種組件中:

在每個例子里,Android系統找到合適的活動、服務或者一組廣播接收者來回應這個意圖,必要時實例化它們。這些消息傳送系統沒有重疊:廣播意圖僅被傳遞給廣播接收者,永遠不會給活動或者服務。一個傳送給startActivity()的意圖是只會被傳遞給一個活動,永遠不會給一個服務或廣播接收者,如此類推。

為了通知系統它們可以處理哪些意圖,活動、服務和廣播接收器可以有一個或多個意圖過濾器。每個過濾器描述組件的一個能力,一系列組件想要接收的意圖。它實際上按照一個期望的類型來進行意圖濾入,同時濾出不想要的意圖-但是只有不想要的隱式意圖會被濾出(那些沒有命名目標的對象類)。一個顯式意圖總能夠被遞交給它的目標,而無論它包含什么。這種情況下過濾器不起作用。但是一個顯式意圖僅當它能通過組件的一個過濾器時才可以被遞交到這個組件。

組件為它能做的每項工作,每個呈現給用戶的不同方面分有不同的過濾器。比如,范例記事本應用程序中的主要活動有三個過濾器:一個是空白板,另一個是用戶可以查看、編輯、或選擇的一個指定的記事目錄,第三是在沒有初始目錄說明的情況下查找一個特定的記錄。一個意圖過濾器是IntentFilter類的一個實例。但是,由于Android系統在啟動一個組件前必須知道這個組件的能力,意圖過濾器通常不會用Java代碼來設置,而是在應用程序清單文件(AndroidManifest.xml)中設置<intent-filter>元素。(有一個例外,通過調用Context.registerReceiver()來注冊的廣播接收器的過濾器;它們是作為意圖過濾器對象而被直接創建的。

二 、過濾器與安全Filters and security

我們不能信賴一個意圖過濾器的安全性。當它打開一個組件來接收某些特定類型的隱式意圖,它并不能阻止以這個組件為目標的顯式意圖。即使過濾器對組件要處理的意圖限制某些動作和數據源,總有人能把一個顯式意圖和一個不同的動作及數據源組合在一起,然后命名該組件為目標。

一個過濾器和意圖對象有同樣的動作、數據以及類別字段。一個隱式意圖在過濾器的所有三個方面都被測試。為了遞交到擁有這個過濾器的組件,它必須通過所有這三項測試。即便只有一個不通過,Android系統都不會把它遞交給這個組件。不過,由于一個組件可以包含多個意圖過濾器,一個不能通過其中一個組件過濾器的意圖可能在另外的過濾器上獲得通過。

與之相關的三個測試詳細描述如下:

測試一:動作測試(Actiontest

清單文件中的意圖過濾器元素里列舉了動作元素,比如:

  1. <intent-filter. . . > 
  2. <action android:name="com.example.project.SHOW_CURRENT" /> 
  3. <action android:name="com.example.project.SHOW_RECENT" /> 
  4. <action android:name="com.example.project.SHOW_PENDING" /> 
  5. . . . 
  6. </intent-filter> 

如同例子所示,一個意圖對象只對單個動作命名,而一個過濾器可能列舉多個。列表不能為空;一個過濾器必須包含至少一個動作元素,否則它將阻塞所有的意圖。

為了通過這個測試,在意圖對象中指定的動作必須匹配過濾器中所列舉的動作之一。如果意圖對象或過濾器不指定一個動作,結果將是:如果這個過濾器沒有列出任何動作,那意圖就沒有什么可匹配的,因此所有的意圖都會測試失敗。沒有意圖能夠通過這個過濾器。另一方面,一個未指定動作的意圖對象自動通過這個測試-只要過濾器包含至少一個動作。

測試二:類別測試(Categorytest

一個意圖過濾器<intent-filter>元素也列舉了類別作為子元素。比如:

  1. <intent-filter. . . > 
  2. <category android:name="android.intent.category.DEFAULT" /> 
  3. <category android:name="android.intent.category.BROWSABLE" /> 
  4. . . . 
  5. </intent-filter> 

注意前面描述的動作和類別常量沒有在清單文件中使用。相反使用了完整的字符串。比如,對應于前述CATEGORY_BROWSABLE常量,上面的例子里使用了"android.intent.category.BROWSABLE"字符串。類似的,字符串"android.intent.action.EDIT" 對應于ACTION_EDIT常量。

對一個通過類別測試的意圖,每個意圖對象中的類別必須匹配一個過濾器中的類別。這個過濾器可以列舉另外的類別,但它不能遺漏任何在這個意圖中的類別。

因此,原則上一個沒有類別的意圖對象應該總能夠通過測試,而不管過濾器里有什么。絕大部分情況下這個是對的。但有一個例外,Android把所有傳給startActivity()的隱式意圖當作他們包含至少一個類別:"android.intent.category.DEFAULT"(CATEGORY_DEFAULT常量)。 因此,想要接收隱式意圖的活動必須在它們的意圖過濾器中包含"android.intent.category.DEFAULT"。,而帶"android.intent.action.MAIN"和"android.intent.category.LAUNCHER"設置的過濾器是例外。它們標記那些啟動新任務和呈現在啟動屏幕的活動。它們可以在類別列表中包含"android.intent.category.DEFAULT",但不是必要的。

測試三:數據測試(Data test

就像動作和類別,一個意圖過濾器的數據規格被包含在一個子元素中。而且這個子元素可以出現多次或一次都不出現。例如:

  1. <intent-filter. . . > 
  2. <data android:type="video/mpeg" android:scheme="http" .. . /> 
  3. <data android:type="audio/mpeg" android:scheme="http" .. . /> 
  4. . . . 
  5. </intent-filter> 

每個數據<data>元素可以指定一個URI和一個數據類型(MIME媒體類型)。有一些單獨的屬性-模式,主機,端口和路徑-URI的每個部分:

  scheme://host:port/path

比如,在下面的URI里面,

  content://com.example.project:200/folder/subfolder/etc

模式是"內容",主機是"com.example.project",端口是"200",路經是"folder/subfolder/etc"。主機和端口一起組成URI鑒權(authority);如果未指定主機,端口會被忽略。

這些屬性都是可選的,但彼此有依賴關系:一個授權要有意義,必須指定一個模式。一個路經要有意義,必須同時指定模式和鑒權。

當一個意圖對象中的URI被用來和一個過濾器中的URI規格比較時,它實際上比較的是上面提到的URI的各個部分。比如,如果過濾器僅指定了一個模式,所有那個模式的URIs和這個過濾器相匹配;如果過濾器指定了一個模式、鑒權但沒有路經,所有相同模式和鑒權的URIs可以匹配上,而不管它們的路經;如果過濾器指定了一個模式、鑒權和路經,只有相同模式、鑒權和路經的URIs可以匹配上。當然,一個過濾器中的路徑規格可以包含通配符,這樣只需要部分匹配即可。

數據<data>元素的類型屬性指定了數據的MIME類型。這在過濾器里比在URI里更為常見。意圖對象和過濾器都可以使用一個"*"通配符指定子類型字段-比如,"text/*"或者"audio/*"-指示任何匹配的子類型。

數據測試同時比較意圖對象和過濾器中指定的URI和數據類型。規則如下:

1) 一個既不包含URI也不包含數據類型的意圖對象僅在過濾器也同樣沒有指定任何URIs和數據類型的情況下才能通過測試。

2) 一個包含URI但沒有數據類型的意圖對象僅在它的URI和一個同樣沒有指定數據類型的過濾器里的URI匹配時才能通過測試。這通常發生在類似于mailto:和tel:這樣的URIs上:它們并不引用實際數據。

3) 一個包含數據類型但不包含URI的意圖對象僅在這個過濾器列舉了同樣的數據類型而且也沒有指定一個URI的情況下才能通過測試。

4) 一個同時包含URI和數據類型(或者可從URI推斷出數據類型)的意圖對象可以通過測試,如果它的類型和過濾器中列舉的類型相匹配的話。如果它的URI和這個過濾器中的一個URI相匹配或者它有一個內容content:或者文件file: URI而且這個過濾器沒有指定一個URI,那么它也能通過測試。換句話說,一個組件被假定為支持content:和file: 數據如果它的過濾器僅列舉了一個數據類型。

如果一個意圖可以通過不止一個活動或服務的過濾器,用戶可能會被詢問要激活那個組件,并且,如果沒有發現目標對象將會出現異常。

責任編輯:佚名 來源: 51CTO.com
相關推薦

2011-08-01 13:35:08

Android安全框架權限

2012-09-27 09:25:50

2012-07-04 09:07:40

2012-07-16 10:21:48

Android進程線程

2012-01-11 16:02:56

Android 4.0Launcher源碼分析

2012-02-13 12:47:41

Android 4.0Launcher源碼分析

2012-02-02 15:56:48

Android 4.0Launcher源碼分析

2012-06-05 10:09:45

AndroidManiAndroidMani

2011-09-06 13:56:43

李洋iOS安全機制

2011-08-29 13:52:15

李洋Android應用

2011-08-12 09:06:48

Android系統應用程序

2011-08-22 08:53:17

Android啟動過程李洋

2010-01-25 16:52:22

Android Int

2013-03-28 09:07:37

Android開發Intent機制

2010-05-28 17:30:58

SVN分支

2011-09-15 08:58:41

Android短信丟失技術原因

2009-04-03 08:21:37

AndroidGoogle移動OS

2013-01-10 15:36:44

Android開發組件Intent

2010-11-08 16:58:36

OWASP專家采訪魏彩霞

2010-10-26 11:04:48

OWASP專家采訪方興
點贊
收藏

51CTO技術棧公眾號

一区二区三区免费高清视频 | 久久久人成影片一区二区三区在哪下载| 国产精品免费看| 欧美片网站yy| 国产视频不卡| 日韩欧美国产成人精品免费| av剧情在线观看| 国产一区二区三区蝌蚪| 亚洲丝袜一区在线| 亚洲不卡中文字幕无码| www.五月天激情| 小处雏高清一区二区三区| 色婷婷av一区二区三区之一色屋| 99免费在线视频观看| 国产一区第一页| 日韩欧美2区| 久久免费看少妇高潮| 久久免费视频网| 国产老头和老头xxxx×| 免费黄色电影在线观看| 欧美a一区二区| 国产香蕉一区二区三区在线视频 | xxx在线播放| 欧美日韩国产观看视频| 风间由美性色一区二区三区| 亚洲图片小说视频| 日韩av影院| 亚洲午夜视频在线观看| 91在线直播亚洲| 2014亚洲天堂| 中文字幕在线亚洲精品| 久久久无码人妻精品一区| √最新版天堂资源网在线| 国产精品亚洲专一区二区三区| 自拍偷拍亚洲区| 污视频网站观看| 欧美日韩在线看片| 国内成人自拍视频| 欧美猛少妇色xxxxx| 日本黄色www| 视频在线观看入口黄最新永久免费国产 | 亚洲妇熟xxxx妇色黄| 国产精品羞羞答答xxdd| 欧美大片免费观看| 国产伦精品一区二区免费| 成年人在线网站| 国产尤物在线观看| 成人搞黄视频| 亚洲高清在线视频| 精品国产乱码久久久久久蜜柚 | 精品久久久在线观看| 久久久久久久久一区| 欧美一级淫片免费视频黄| 欧美限制电影| 日韩欧美中文字幕一区| 国产高清av在线播放| 日本护士...精品国| 日韩精品一区第一页| 日韩在线观看高清| 亚洲欧美综合视频| 日本电影欧美片| 中文字幕在线不卡一区二区三区| 91网站在线看| 免费日韩一级片| 日韩dvd碟片| 日韩欧美精品在线| 成人午夜视频免费在线观看| 成人在线网址| 91在线高清观看| 国产欧美精品久久久| 精品一级少妇久久久久久久| 国产中文精品久高清在线不| 欧美一级在线免费| www.亚洲天堂网| 成人免费网站在线观看视频| 91在线免费视频观看| 91免费电影网站| 在线天堂中文字幕| 欧美在线视屏| 一本一本久久a久久精品综合小说| 亚洲av无一区二区三区久久| 国产一区二区主播在线| 亚洲自拍偷拍av| 涩涩涩999| 亚洲精品免费在线观看视频| 日韩vs国产vs欧美| 午夜欧美不卡精品aaaaa| 久久久久久成人网| 卡通动漫国产精品| 欧美一卡2卡三卡4卡5免费| 午夜免费一区二区| 国产激情视频在线看| 亚洲免费观看高清完整版在线 | 免费黄频在线观看| 刘亦菲一区二区三区免费看| 亚洲精品国产a久久久久久| 视频在线观看成人| 日本亚洲欧美| 福利电影一区二区| 91中文精品字幕在线视频| 国产一级精品毛片| 免费视频一区| 韩国19禁主播vip福利视频| 在线观看黄网址| 久久精品国产68国产精品亚洲| 日韩成人在线电影网| 亚洲高清av一区二区三区| 国产精品久久久久久久久免费高清 | 九色porny在线| 国产精品免费视频网站| 日韩精品一区二区三区外面 | 一区二区视频在线播放| chinese偷拍一区二区三区| 91在线一区二区三区| 国产精品久久国产三级国电话系列| 一区二区日韩在线观看| 久久精品国产第一区二区三区| 日av在线播放中文不卡| 亚洲男人第一av| 99精品国产在热久久婷婷| 欧美日韩成人精品| 日本福利片在线观看| 婷婷六月综合| 久久精品在线视频| 男女性高潮免费网站| 亚州av乱码久久精品蜜桃| 精品国产一区久久久| 国产精品1区2区3区4区| 欧美疯狂party性派对| 色悠悠国产精品| 国产乱子轮xxx农村| 欧美黄色aaaa| 久久久久久有精品国产| 国产成人啪精品午夜在线观看| 精品69视频一区二区三区Q| 国内精品一区二区三区| 99热在线观看免费精品| 麻豆9191精品国产| 国产精品观看在线亚洲人成网| 国产情侣免费视频| 久久精品理论片| 91久久嫩草影院一区二区| 99久久国产免费| 成人午夜av电影| 久久国产精品免费一区| 成av人电影在线观看| 亚洲婷婷综合色高清在线| 免费一级淫片aaa片毛片a级| 岛国av在线播放| 91精品91久久久中77777| 亚洲久久中文字幕| 136国产福利精品导航网址应用| 亚洲福利视频网| 欧美偷拍一区二区三区| 亚洲精彩视频| 午夜免费日韩视频| 在线观看视频中文字幕| 成人一区二区三区视频在线观看| 久久精品人成| 男人天堂久久久| 亚洲成人av一区二区三区| 国产aaaaa毛片| 99久热这里只有精品视频免费观看| 亚洲精品720p| 亚洲天堂网av在线| 亚洲视频播放| 成人免费激情视频| 欧洲视频在线免费观看| 美女性感视频久久| 69久久99精品久久久久婷婷| www.久久com| 天天躁日日躁成人字幕aⅴ| 久久天堂成人| 成人黄色av网| 天堂√在线中文官网在线| 亚洲欧洲av在线| 久在线观看视频| 婷婷久久免费视频| 亚洲加勒比久久88色综合| 91传媒免费观看| 国产精品女主播一区二区三区| 成人精品久久久| 日本福利片在线| 一区二区三区高清| 欧美日韩在线免费播放| 超碰一区二区三区| 俺也去精品视频在线观看| 国产精品一区二区三区四| 国产一区二区三区美女| 日韩一本精品| 小早川怜子影音先锋在线观看| 久久视频免费在线观看| 国产综合自拍| 国产精品夜间视频香蕉| 欧美偷拍视频| 亚州成人在线电影| 韩国三级在线播放| 91精品国产成人观看| 国产精品久久久久久中文字| 五十路在线观看| 一级日本不卡的影视| 久久6免费视频| 久久视频在线| 国产欧美一区二区三区四区| 欧美扣逼视频| 欧美日韩国内自拍| 中国极品少妇videossexhd| 欧美日韩国产成人精品| 成人激情黄色网| 蜜桃视频在线观看www社区| 欧美三区在线观看| av手机在线播放| 久久久久久久波多野高潮日日| 久久av一区二区| 亚洲黄色免费av| 国产网站欧美日韩免费精品在线观看| 日本熟女一区二区| av动漫一区二区| 国产午夜福利100集发布| 极品国产人妖chinesets亚洲人妖| 久久久久久97| 日本激情一区二区| 亚洲成人av电影在线| 人妻av一区二区| av成人国产| 欧美三日本三级少妇三99| 亚洲精品在线影院| 中文字幕日韩在线视频| 国产精品高潮呻吟AV无码| 综合激情成人伊人| 麻豆av免费看| 国产伦理一区| 色噜噜色狠狠狠狠狠综合色一| 素人啪啪色综合| 久久久国产一区二区| 亚洲第一视频在线播放| 性做久久久久久久久| 中文字幕丰满乱子伦无码专区| 日本美女视频一区二区| 一区二区三区我不卡| 涩涩屋成人免费视频软件| 日韩一区欧美二区| 精品国产一区二区在线| 国产普通话bbwbbwbbw| 亚洲国产精品久久人人爱| 亚洲一区二区乱码| 日本免费在线视频不卡一不卡二| 一区二区三区视频在线播放| 亚洲三级av| 57pao精品| 日韩av中文| 亚洲激情视频在线观看| 亚洲天堂视频在线| 一区二区三区中文在线| 国精产品一区一区三区免费视频 | 久久这里只有精品18| 午夜精品影视国产一区在线麻豆| 国产精品久久国产精品99gif| 久久精品视频免费看| 日韩国产在线看| 99精品视频在线播放免费| 欧美日韩亚洲激情| 永久免费看片直接| 91丨porny丨中文| 久久久久xxxx| 亚洲啪啪91| 在线观看成人av| 欧美wwwsss9999| 成人在线激情视频| 欧美电影免费观看网站| 九九久久久久99精品| 国产福利免费在线观看| 精品国产91洋老外米糕| 一区二区国产欧美| 色吊一区二区三区| 国产一级视频在线观看| 国产精品私人影院| 人妻丰满熟妇av无码久久洗澡| 国产一区二区三区免费看| 一区二区在线播放视频| 亚洲清纯自拍| 黄色一级片av| 91久久电影| 欧美一区二区视频17c| 你懂的在线观看一区二区| 亚洲影视中文字幕| 青青国产精品| 国产精品国产自产拍高清av水多| 捆绑调教日本一区二区三区| 欧美日本亚洲视频| 麻豆免费在线观看| 国产一区二区免费| 青青草手机在线| 亚洲国产欧美一区二区三区同亚洲| 国产乱色精品成人免费视频| 在线免费观看不卡av| 91看片在线播放| 一区二区三区不卡视频在线观看 | 好吊视频一二三区| 欧美一区二区三区啪啪| 亚洲永久精品视频| 欧美视频一区二区三区四区 | 日韩视频一区| 屁屁影院ccyy国产第一页| 91精品高清| 性生活免费观看视频| 欧美高清在线| 亚洲欧洲国产精品久久| 欧美日韩高清| 亚洲精品一区二区三区四区五区| 国产亚洲电影| 欧美一区二区三区精美影视 | 日本综合视频| 国产精品久久电影观看| 国产精品.xx视频.xxtv| 国产日韩欧美在线看| 日韩欧美三区| 92福利视频午夜1000合集在线观看| 在线高清欧美| 亚洲xxxx视频| 国产精品一线| 久久精品一区二区三区不卡免费视频| 日韩高清成人在线| 蜜桃999成人看片在线观看| 人妖一区二区三区| 日本在线观看一区| 不卡一区2区| 中文字幕久久综合| 黄色免费成人| 北条麻妃69av| 日本最新不卡在线| 手机免费看av网站| 国产成人av一区| 精品中文字幕在线播放| 久久久久国产精品免费免费搜索| 男女做爰猛烈刺激| 国产精品久久久久久妇女6080| 成人涩涩小片视频日本| 亚洲一区中文日韩| 亚洲伊人成人网| 精品视频1区2区| 国产av精国产传媒| 日韩av网站电影| jizz在线观看视频| 欧美成人一区二区三区电影| 国产美女情趣调教h一区二区| 91精品国产一区| 日韩毛片一区| 成人免费在线看片| 好吊妞视频这里有精品| 日产中文字幕在线精品一区| 天天射综合网视频| 97视频在线免费| 日本午夜一区二区| 色欲欲www成人网站| 久久久久久久久免费| 99鲁鲁精品一区二区三区| 天天色 色综合| 在线免费看av片| 亚洲成人久久久| av播放在线观看| 97精品伊人久久久大香线蕉| 精品肉辣文txt下载| 国产欧美日韩综合精品二区| 国产精品亚洲二区| 国产天堂视频在线观看| 免费成人av资源网| 国产激情第一页| 自拍偷拍国产精品| 日本黄色一级视频| 欧美成人一区二区三区在线观看 | 91精品国产91久久久久麻豆 主演| 肉肉av福利一精品导航| 伊人久久久久久久久| 国产精品色噜噜| 成年人免费高清视频| 日韩你懂的在线观看| 69久久久久| 欧美尤物巨大精品爽| 欧美在线在线| 亚洲日本精品| 性欧美videos另类喷潮| 佐山爱在线视频| 国产精品理论片在线观看| 国产综合精品视频| 精品国产91洋老外米糕| 菠萝菠萝蜜在线视频免费观看| 国产精品成人aaaaa网站| 露出调教综合另类| 久久这里只有精品8| 精品一区二区三区免费视频| 黄色三级生活片| 色妹子一区二区| 亚洲欧美日韩精品永久在线| 国a精品视频大全| 日韩中文字幕视频网| 三年中国中文在线观看免费播放 | 亚洲精品你懂的| 欧美高清69hd| 亚洲一区二区国产|