導航:首頁 > 凈水問答 > 安卓開發中意圖過濾

安卓開發中意圖過濾

發布時間:2020-12-26 00:31:47

❶ datahelper.filter怎麼用

Android基本的設計理念是鼓勵減少組件間的耦合,因此Android提供了Intent (意圖) ,Intent提供了一種通用的消息系統,它允許在你的應用程序與其它的應用程序間傳Intent來執行動作和產生事件。使用Intent可以激活Android應用三種類型的核心組件:活動、服務和廣播接收者。
Intent可以劃分成顯式意圖和隱式意圖:
顯式意圖:調用Intent.setComponent()\ Intent.setClassName()或Intent.setClass()方法明確指定了組件名的Intent為顯式意圖,顯式意圖明確指定了要激活的組件是哪個組件。

隱式意圖:沒有明確指定組件名的Intent為隱式意圖。 Android系統會根據隱式意圖中設置的動作(action)、類別(category)、數據(URI和數據類型)找到最合適的組件來處理這個意圖。對於隱式意圖,Android是怎樣尋找到這個最合適的組件呢?我們在定義Activity時,指定了一個intent-filter,Intent Filter(意圖過濾器)其實就是用來匹配隱式Intent的,當一個意圖對象被一個意圖過濾器進行匹配測試時,只有三個方面會被參考到:動作、數據(URI以及數據類型)和類別。
動作測試(Action test)
一個意圖對象只能指定一個動作名稱,而一個過濾器可能列舉多個動作名稱。如果意圖對象或過濾器沒有指定任何動作,結果將如下:
如果過濾器沒有指定任何動作,那麼將阻塞所有的意圖,因此所有的意圖都會測試失敗。沒有意圖能夠通過這個過濾器。
另一方面,只要過濾器包含至少一個動作,一個沒有指定動作的意圖對象自動通過這個測試
類別測試(Category test)
對於一個能夠通過類別匹配測試的意圖,意圖對象中的類別必須匹配過濾器中的類別。這個過濾器可以列舉另外的類別,但它不能遺漏在這個意圖中的任何類別。
原則上一個沒有類別的意圖對象應該總能夠通過匹配測試,而不管過濾器里有什麼。大部分情況下這個是對的。但有一個例外,Android把所有傳給startActivity()的隱式意圖當作他們包含至少一個類別:"android.intent.category.DEFAULT" (CATEGORY_DEFAULT常量)。 因此,想要接收隱式意圖的活動必須在它們的意圖過濾器中包含"android.intent.category.DEFAULT"。(帶"android.intent.action.MAIN"和"android.intent.category.LAUNCHER"設置的過濾器是例外)
數據測試(Data test)
當一個意圖對象中的URI被用來和一個過濾器中的URI比較時,比較的是URI的各個組成部分。例如,如果過濾器僅指定了一個scheme,所有該scheme的URIs都能夠和這個過濾器相匹配;如果過濾器指定了一個scheme、主機名但沒有路經部分,所有具有相同scheme和主機名的URIs都可以和這個過濾器相匹配,而不管它們的路經;如果過濾器指定了一個scheme、主機名和路經,只有具有相同scheme、主機名和路經的URIs才可以和這個過濾器相匹配。當然,一個過濾器中的路徑規格可以包含通配符,這樣只需要部分匹配即可。

❷ Android Manifest什麼意思

每個安卓應用程序必須有一個AndroidManifest.xml文件(正是這個名字),在其根目錄res下。它在簡單的Android系統的應用提出了重要的信息,信息系統[1] 必須具備之前,它可以運行任何應用程序的代碼。除其他事項外,清單中執行下列操作:
它命名為應用程序的Java包。包的名稱作為一個應用程序的唯一標識符。
它描述了應用程序的組件-的活動,服務,廣播接收機,內容提供商,應用程序組成。它命名的類,實現每個組件,並出版自己的能力(例如,他們可以處理哪些意圖的消息)。這些聲明讓Android系統知道的組件是什麼和在什麼條件下,他們可以推出。
它決定哪些進程將主機應用程序組件。
它宣稱,應用程序必須有許可權才能訪問受保護的API部分,並與其他應用程序進行交互。
它還宣布,其他人則需要以與應用程序的組件交互的許可權。
它列出了儀器儀表類,提供了分析和其他信息的應用程序正在運行。這些聲明是在清單中,只有當應用程序正在開發和測試;申請公布之前,他們正在拆除。
它宣布的Android API的應用程序需要的最低水平。
它列出了庫,應用程序必須與配對。

結構編輯
下圖顯示了manifest文件和每一個元素,它可以包含的一般結構。每個元素,連同其所有屬性記錄在一個單獨的文件。要查看有關的任何元素的詳細信息,單擊圖中的元素的名稱,在按字母順序排列的列表,如下圖,或任何其他元素的名稱提到的元素。
<?XML版本= 「1.0」 編碼= 「UTF-8」 ?>
<manifest>
<uses-permission/>
<permission/>
<permission-tree/>
<permission-group/>
<instrumentation/>
<uses-sdk/>
<uses-configuration/>
<uses-feature/>
<supports-screens/>
<compatible-screens/>
<supports-gl-texture/
的<application><activity><intent-filter>行動< />< 類別><數據/></意圖過濾器><元數據/></活動><activity-alias><intent-filter>。。。過濾器><元數據/></活動別名>的<service><intent-filter>。。。過濾器><meta-data/></服務><receiver><intent-filter>。。。過濾器><元數據/></接收器>的<provider><贈款URI許可權/>< 元數據></供應商><用途庫/></申請></清單>
下面列出的所有元素可以出現在manifest文件中按字母順序排列。這是唯一合法的元素,你不能添加自己的元素或屬性。
<action>
<activity>
<activity-alias>
<application>
<category>
<data>
<grant-uri-permission>
<instrumentation>
<intent-filter>
<manifest>
<meta-data>
<permission>
<permission-group>
<permission-tree>
<provider>
<receiver>
<service>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-library>
<uses-permission>
<uses-sdk>

約定
一些公約和規則普遍適用於清單中的所有元素和屬性:

分子
只有 <manifest>和 的<application> 元素是必需的,他們每人必須在場,並只能出現一次。大多數人可以出現多次或根本沒有-但至少他們中的一些必須完成任何有意義的清單。如果一個元素包含任何東西,它包含其他元素。通過屬性值設置,而不是作為一個元素內的字元數據。
一般不會下令在同一級別的元素。例如, <activity>的<provider>,和 的<service> 元素可以以任何順序混合。(一個 <activity-alias> 元素是此規則的例外:必須遵循 <activity>, 它是一個別名。)

屬性
在正式意義上說,所有的屬性都是可選的。不過,也有一些必須指定為元素,以實現其目的。使用的文件,作為指導。對於真正的可選屬性,它提到一個默認值或規范的情況下發生的事情。除了 根屬性 <manifest> 元素,所有的屬性名與Android的開始:前綴-例如,機器人:alwaysRetainTaskState。因為前綴是普遍的,一般的文件時忽略它指屬性的名字。

名稱
許多元素對應到Java對象,包括應用程序本身的元素( 的<application> 元素),其主要成分-活動(<activity>),服務(的<service>),廣播接收機(<receiver>),內容提供商(的<provider>)。如果你定義一個子類,子類,你幾乎總是會活動,服務, BroadcastReceiver,和ContentProvider的組件類()被宣布通過名稱屬性。該名稱必須包括完整的包指定。例如,一個服務子類可以聲明如下:
<清單。。> <應用程序。。> <服務機器人:名稱= 「com.example.project.SecretService」 。。。>。。。</服務>。。。</申請> </清單>然而,作為一個縮寫,如果字元串的第一個字元是一個句號,該字元串附加到應用程序的包名(由指定<manifest> 元素的 包 屬性)。上面是相同的分配如下:
<清單的包= 「com.example.project」 。。> <應用程序。。> <服務機器人:名稱= 「。SecretService」 。。。>。。。</服務>。。。</申請> </清單>Android的組件啟動時,創建一個命名的子類的實例。如果沒有指定一個子類,它創建一個基類的實例。

多個值
如果可以指定多個值,元素幾乎總是重復的,而不是在一個單一的元素列出多個值。例如,一個意圖過濾器可以列出幾個動作:<意圖過濾器。。。。。</意圖過濾器>資源值一些屬性,可以向用戶顯示的值 - 例如,一個標簽和一個活動的圖標。這些屬性的值應本地化,因此從資源或主題。資源值表示在下面的格式,[ 包:] 類型:名稱
如果資源是在應用程序相同的包, 其中包名稱可以省略,類型是一個類型的資源-如「串」或「繪制」 - 名稱是名稱標識的特定資源。例如:
< 活動:圖標= 「@繪制/ smallPic」 。。。>以類似的方式表達主題值,但與最初的「 ? 「 而不是「 @ 「:
[ 包:] 類型:名稱
字元串值如果屬性值是一個字元串,雙反斜杠(' \ \ ')必須使用轉義字元-例如,「 \ \ N 「一個換行符或」 \ \ uxxxx「的Unicode字元。

功能
以下各節描述了一些Android的功能是如何體現在manifest文件中。
意圖過濾器
應用程序(它的活動,服務和廣 播接收機)的核心部件,被激活的意圖。意圖是信息(捆綁意向書,描述了一個理想的行動對象) -包括要採取行動時,組件類別的數據,應執行的行動,和其他有關說明。機器人找到一個合適的組件回應的意圖,啟動一個新的組件實例,如果需要的話,它傳遞的Intent對象。
組件宣傳他們的能力-他們能夠應對各種意圖的意圖過濾器 -通過。由於Android系統必須學習一個組件可以處理其中的意圖之前推出的組件,意圖過濾器指定在清單 <intent-filter> 元素。一個組件可以有任何數量的過濾器,每一個不同的能力。
意圖明確命名一個目標組件將激活該組件;過濾器並沒有起到作用。但意圖不指定目標的名字,可以激活一個組件,只有當它可以通過組件的過濾器之一。
意向對象是如何對意圖過濾器測試的信息,看到一個單獨的文件, 意圖和意圖過濾器。
圖標和標簽
一些元素可以向用戶顯示一個小圖標和文本標簽的圖標和標簽屬性。有些也有 描述較長的說明性文本,也可以在屏幕上顯示的屬性。例如,在 <permission> 元素具有所有這三個屬性,這樣當用戶詢問是否要授予應用程序的許可權要求,一個圖標代表的許可權,許可權的名稱,描述它需要什麼都可以呈現給用戶。
在任何情況下,包含元素的圖標,並在標簽集變成默認的 圖標和標簽設置為容器的所有子元素。因此,在設置的<application> 元素的圖標和標簽 是默認的圖標,並為每個應用程序的組件標簽。同樣,圖標和標簽組件集-為例如, <activity>的 元素-每個組件的默認設置 <intent-filter>的 元素。如果 的<application> 元素設置一個標簽,而是一種活動,其意圖過濾器沒有做,被視為應用程序標簽的活動和意圖過濾器的標簽。
被用來代表一個組件時,該組件實現廣告過濾器的功能,向用戶意圖過濾器設置的圖標和標簽。例如,一個「過濾器android.intent.action.MAIN 「和」 android.intent.category.LAUNCHER 「設置廣告作為一個,啟動一個應用程序的活動-即是,作為一個在應用程序啟動器應顯示。在過濾器中設置的圖標和標簽,因此在發射器上顯示的。

許可權
一個許可權是一種限制,限制訪問代碼的一部分,或在設備上的數據。施加的限制,以保護關鍵數據和代碼可能被濫用,扭曲或損害了用戶體驗。
每個許可權確定一個唯一的標簽。標簽往往表示,這是限制的行動。例如,這里是由Android定義了一些許可權:
android.permission.CALL_EMERGENCY_NUMBERS
android.permission.READ_OWNER_DATA
android.permission.SET_WALLPAPER
android.permission.DEVICE_POWER
一個功能可以保護最多一個許可權。
如果應用程序需要訪問許可權保護功能,它必須聲明,它需要 在清單與許可權 <uses-permission>的元素。然後,在設備上安裝應用程序時,安裝程序決定是否批准或者不批准通過檢查當局簽署的應用程序的證書,並在某些情況下,要求用戶請求的許可權。如果被授予的許可權,應用程序能夠使用的保護功能。如果沒有,只會失敗,沒有任何通知用戶試圖訪問這些功能。
應用程序還可以保護自己的組件(活動,服務,廣播接收機,內容提供商)與許可權。它可以採用任何定義的Android(在列出的許可權 android.Manifest.permission)或其他應用程序申報。或者也可以定義自己的。一個新的許可權宣布與 <permission> 元素。例如,一個活動可以保護如下:
<清單。。>:許可機器人:名稱= 「com.example.project.DEBIT_ACCT 。。/> <用途許可機器人:名稱= 「com.example.project.DEBIT_ACCT」 />。。。<應用程序。。。。>。。。</活動> </申請> </清單>請注意,在這個例子中,DEBIT_ACCT許可不僅宣布 <permission> 元素,它的使用也要求與 <uses-permission> 元素。為了應用程序的啟動保護活動的其他組成部分,必須要求其使用,即使是由應用程序本身施加保護。
同樣的例子,如果在宣布在別處(例如作為android.permission.CALL_EMERGENCY_NUMBERS許可權,許可權屬性設置,它不會有必要宣布它再次 <permission> 元素,但它仍然會一直有必要要求其與使用 <uses-permission>。
<permission-tree> 元素聲明為一組,將在代碼中定義的許可權的命名空間。和 <permission-group> 定義為一組的許可權(包括那些與艙單申報的標簽 <permission> 元素和那些宣布在別處)。它的影響只有許可權如何分組時,呈現給用戶。 <permission-group> 元素沒有指定屬於該組的許可權;它只是給該組的名稱。許可權被放置在該組分配的<permission> 元件的 permissionGroup, 屬性組的名稱 。


每一個應用程序連接到默認的Android庫,其中包括建築應用(如活動,服務,意圖,查看「按鈕,應用,ContentProvider的,等通用類)的基本包。
然而,一些軟體包駐留在自己的圖書館。如果您的應用程序使用這些包有任何的代碼,它必須明確要求對他們聯系。艙單必須包含單獨 <uses-library> 元素,每個命名的圖書館。(庫的名稱,可以發現在文件包)。
MANIFEST 系統文件
C:\WINDOWS\WinSxS\Manifests\下有許多XML格式的manifest文件,這些是服務端的程序清單。WinSxs是windows XP以上版本提供的非託管並行緩存,裡面安裝了各種版本的經過強文件名簽名的系統庫,這些文件正是標注了系統中的強文件名簽名,如果與manifest 清單裡面所列出的依賴項對上的話,就會被載入。
C:\WINDOWS\WinSxS\Manifests\是一個重要的系統文件夾,不能刪除!

❸ lay-filter是怎麼用的

Android基本的設計理念是鼓勵減少組件間的耦合,因此提供了Intent(意圖),Intent提供了一種通用的消息系統,它允許在你的應用程序與其它的應用程序間傳Intent來執行動作和產生事件。使用Intent可以激活Android應用三種類型的核心組件:活動、服務和廣播接收者。Intent可以劃分成顯式意圖和隱式意圖:顯式意圖:調用Intent.setComponent()\Intent.setClassName()或Intent.setClass()方法明確指定了組件名的Intent為顯式意圖,顯式意圖明確指定了要激活的組件是哪個組件。隱式意圖:沒有明確指定組件名的Intent為隱式意圖。Android系統會根據隱式意圖中設置的動作(action)、類別(category)、數據(URI和數據類型)找到最合適的組件來處理這個意圖。對於隱式意圖,Android是怎樣尋找到這個最合適的組件呢?我們在定義Activity時,指定了一個intent-filter,IntentFilter(意圖過濾器)其實就是用來匹配隱式Intent的,當一個意圖對象被一個意圖過濾器進行匹配測試時,只有三個方面會被參考到:動作、數據(URI以及數據類型)和類別。動作測試(Actiontest)一個意圖對象只能指定一個動作名稱,而一個過濾器可能列舉多個動作名稱。如果意圖對象或過濾器沒有指定任何動作,結果將如下:如果過濾器沒有指定任何動作,那麼將阻塞所有的意圖,因此所有的意圖都會測試失敗。沒有意圖能夠通過這個過濾器。另一方面,只要過濾器包含至少一個動作,一個沒有指定動作的意圖對象自動通過這個測試類別測試(Categorytest)對於一個能夠通過類別匹配測試的意圖,意圖對象中的類別必須匹配過濾器中的類別。這個過濾器可以列舉另外的類別,但它不能遺漏在這個意圖中的任何類別。原則上一個沒有類別的意圖對象應該總能夠通過匹配測試,而不管過濾器里有什麼。大部分情況下這個是對的。但有一個例外,Android把所有傳給startActivity()的隱式意圖當作他們包含至少一個類別:"android.intent.category.DEFAULT"(CATEGORY_DEFAULT常量)。因此,想要接收隱式意圖的活動必須在它們的意圖過濾器中包含"android.intent.category.DEFAULT"。(帶"android.intent.action.MAIN"和"android.intent.category.LAUNCHER"設置的過濾器是例外)數據測試(Datatest)當一個意圖對象中的URI被用來和一個過濾器中的URI比較時,比較的是URI的各個組成部分。例如,如果過濾器僅指定了一個scheme,所有該scheme的URIs都能夠和這個過濾器相匹配;如果過濾器指定了一個scheme、主機名但沒有路經部分,所有具有相同scheme和主機名的URIs都可以和這個過濾器相匹配,而不管它們的路經;如果過濾器指定了一個scheme、主機名和路經,只有具有相同scheme、主機名和路經的URIs才可以和這個過濾器相匹配。當然,一個過濾器中的路徑規格可以包含通配符,這樣只需要部分匹配即可。數據測試同時比較意圖對象和過濾器中指定的URI和數據類型。規則如下:a.一個既不包含URI也不包含數據類型的意圖對象僅在過濾器也同樣沒有指定任何URIs和數據類型的情況下才能通過測試。b.一個包含URI但沒有數據類型的意圖對象僅在它的URI和一個同樣沒有指定數據類型的過濾器里的URI匹配時才能通過測試。這通常發生在類似於mailto:和tel:這樣的URIs上:它們並不引用實際數據。c.一個包含數據類型但不包含URI的意圖對象僅在這個過濾器列舉了同樣的數據類型而且也沒有指定一個URI的情況下才能通過測試。d.一個同時包含URI和數據類型(或者可從URI推斷出數據類型)的意圖對象可以通過測試,如果它的類型和過濾器中列舉的類型相匹配的話。如果它的URI和這個過濾器中的一個URI相匹配或者它有一個內容content:或者文件file:URI而且這個過濾器沒有指定一個URI,那麼它也能通過測試。換句話說,一個組件被假定為支持content:和file:數據如果它的過濾器僅列舉了一個數據類型。

❹ 如何設置文件使用意圖的相機ACTION

隱式意圖,想要接收隱式意圖的活動必須在它們的意圖過濾器中包含"android。換句話說:沒有明確指定組件名的Intent為隱式意圖。當然;android,顯式意圖明確指定了要激活的組件是哪個組件.intent。這個過濾器可以列舉另外的類別:和tel。如果它的URI和這個過濾器中的一個URI相匹配或者它有一個內容content、主機名和路經.intent。(帶"、數據(URI以及數據類型)和類別、類別(category):這樣的URIs上:調用Intent,而不管它們的路經,所有具有相同scheme和主機名的URIs都可以和這個過濾器相匹配,指定了一個intent-filter。大部分情況下這個是對的。
數據測試同時比較意圖對象和過濾器中指定的URI和數據類型。這通常發生在類似於mailto。
另一方面?我們在定義Activity時; (CATEGORY_DEFAULT常量).DEFAULT":
a:活動。如果意圖對象或過濾器沒有指定任何動作,如果過濾器僅指定了一個scheme,一個過濾器中的路徑規格可以包含通配符,因此所有的意圖都會測試失敗;android.intent;,但它不能遺漏在這個意圖中的任何類別。規則如下;設置的過濾器是例外)
數據測試(Data test)
當一個意圖對象中的URI被用來和一個過濾器中的URI比較時,Android把所有傳給startActivity()的隱式意圖當作他們包含至少一個類別、數據(URI和數據類型)找到最合適的組件來處理這個意圖,結果將如下,如果它的類型和過濾器中列舉的類型相匹配的話.category:它們並不引用實際數據.MAIN". 一個既不包含URI也不包含數據類型的意圖對象僅在過濾器也同樣沒有指定任何URIs和數據類型的情況下才能通過測試、服務和廣播接收者。
Intent可以劃分成顯式意圖和隱式意圖,一個沒有指定動作的意圖對象自動通過這個測試
類別測試(Category test)
對於一個能夠通過類別匹配測試的意圖,所有該scheme的URIs都能夠和這個過濾器相匹配,這樣只需要部分匹配即可. 一個包含URI但沒有數據類型的意圖對象僅在它的URI和一個同樣沒有指定數據類型的過濾器里的URI匹配時才能通過測試,只有三個方面會被參考到。對於隱式意圖。
動作測試(Action test)
一個意圖對象只能指定一個動作名稱,因此Android提供了Intent (意圖) ,那麼它也能通過測試;如果過濾器指定了一個scheme.category.setComponent()\,那麼將阻塞所有的意圖,Android是怎樣尋找到這個最合適的組件呢:"。
d、主機名但沒有路經部分。
原則上一個沒有類別的意圖對象應該總能夠通過匹配測試,它允許在你的應用程序與其它的應用程序間傳Intent來執行動作和產生事件.setClassName()或Intent,意圖對象中的類別必須匹配過濾器中的類別。例如,當一個意圖對象被一個意圖過濾器進行匹配測試時. 一個包含數據類型但不包含URI的意圖對象僅在這個過濾器列舉了同樣的數據類型而且也沒有指定一個URI的情況下才能通過測試:
如果過濾器沒有指定任何動作。但有一個例外。
c,比較的是URI的各個組成部分.action.setClass()方法明確指定了組件名的Intent為顯式意圖,只要過濾器包含至少一個動作.LAUNCHER".DEFAULT",Intent提供了一種通用的消息系統。 因此,Intent Filter(意圖過濾器)其實就是用來匹配隱式Intent的.category。
b: URI而且這個過濾器沒有指定一個URI:動作。沒有意圖能夠通過這個過濾器,只有具有相同scheme:或者文件file,而一個過濾器可能列舉多個動作名稱,而不管過濾器里有什麼; Intent。使用Intent可以激活Android應用三種類型的核心組件;和".intent、主機名和路經的URIs才可以和這個過濾器相匹配。 Android系統會根據隱式意圖中設置的動作(action),一個組件被假定為支持content;如果過濾器指定了一個scheme: 數據如果它的過濾器僅列舉了一個數據類型Android基本的設計理念是鼓勵減少組件間的耦合:
顯式意圖;android. 一個同時包含URI和數據類型(或者可從URI推斷出數據類型)的意圖對象可以通過測試:和file

閱讀全文

與安卓開發中意圖過濾相關的資料

熱點內容
煤礦500人每天生活污水有多少 瀏覽:838
污水處理廠需要規章制度 瀏覽:303
超濾機和納慮機 瀏覽:737
什麼東西祛水壺里的水垢最好 瀏覽:140
用七牛回源網站被標惡意 瀏覽:754
吉林餐廳洗滌污水處理設備多少錢 瀏覽:391
弱酸廢水可以排放嗎 瀏覽:645
反滲透氧化還原電位高怎麼調整 瀏覽:821
高溫除垢機 瀏覽:48
污水處理公司發展 瀏覽:319
安裝污水處理設備有哪些質量要求 瀏覽:163
飲水機帶水壺還有水怎麼辦 瀏覽:833
gpan超濾膜有毒嗎 瀏覽:247
污水處理廠經營期限 瀏覽:621
小型加濕器怎麼除垢 瀏覽:231
深圳市楠業水處理環保有限公司 瀏覽:905
凈水器頭道濾芯是什麼 瀏覽:137
保定污水處理池的蓋板廠家有哪些 瀏覽:761
電器上樹脂怎麼分解 瀏覽:30
污水處理作業應急措施 瀏覽:973