Android復習(三)清單文件中的元素——>uses-configuration、uses-library、uses-permission、uses-permission-sdk-23
<uses-configuration>
- 語法:
-
<uses-configuration android:reqFiveWayNav=["true" | "false"] android:reqHardKeyboard=["true" | "false"] android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"] android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"] android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] /> - 包含于:
<manifest>- 說明:
- 指示應用所需的硬件和軟件功能。例如,應用可能會指定它需要物理鍵盤或特定的導航設備(如軌跡球)。該規范用于避免將應用安裝在它無法正常運行的設備上。
注意:大多數應用都不會使用此清單標記。您應始終支持使用方向鍵輸入,以便幫助視障的用戶,并支持提供除觸摸之外的方向鍵輸入或者以方向鍵代替觸摸輸入的設備。如需了解如何在應用中支持方向鍵輸入,請閱讀啟用焦點導航。如果您的應用在沒有觸摸屏的情況下完全無法正常運行,則改用
<uses-feature>標記來聲明所需的觸摸屏類型,類型范圍從"android.hardware.faketouch"(表示基本的觸摸樣式事件)到更高級的觸摸類型(如"android.hardware.touchscreen.multitouch.jazzhand",表示多個手指的不同輸入)。 - 屬性:
android:reqFiveWayNav- 應用是否需要五向導航控件 - 如果需要,則為“
true”;如果不需要,則為“false”。五向控件可以將選擇向上、向下、向右或向左移動,還提供調用當前選擇的方式。它可以是方向鍵、軌跡球,也可以是其他設備。如果應用需要方向控件(而不是特定類型的控件),則可以將此屬性設置為“
true”并忽略reqNavigation屬性。不過,如果應用需要特定類型的方向控件,則可忽略此屬性并改為設置reqNavigation。 android:reqHardKeyboard- 應用是否需要硬件鍵盤 - 如果需要,則為“
true”;如果不需要,則為“false”。 android:reqKeyboardType- 應用所需的鍵盤類型(如果有)。此屬性不區分硬件鍵盤和軟件鍵盤。如果需要特定類型的硬件鍵盤,請在此處指定類型,并將
reqHardKeyboard屬性設置為“true”。該值必須是以下字符串之一:
值 說明 “ undefined”應用不需要鍵盤。(未定義鍵盤要求。)這是默認值。 “ nokeys”應用不需要鍵盤。 “ qwerty”應用需要標準的 QWERTY 鍵盤。 “ twelvekey”應用需要十二鍵撥號鍵盤(如大多數手機上的此類鍵盤),帶有從 0到9數字的鍵以及星號 (*) 和井號 (#) 鍵。 android:reqNavigation- 應用所需的導航設備(如果有)。該值必須是以下字符串之一:
值 說明 “ undefined”應用不需要任何類型的導航控件。(未定義導航要求。)這是默認值。 “ nonav”應用不需要導航控件。 “ dpad”應用需要用于導航的方向鍵。 “ trackball”應用需要用于導航的軌跡球。 “ wheel”應用需要導航輪。 如果應用需要導航控件,但控件的確切類型無關緊要,則應用可以將
reqFiveWayNav屬性設置為“true”(而不是設置此屬性)。 android:reqTouchScreen- 應用所需的觸摸屏類型(如果有)。該值必須是以下字符串之一:
值 說明 “ undefined”應用不需要觸摸屏。(未定義觸摸屏要求。)這是默認值。 “ notouch”應用不需要觸摸屏。 “ stylus”應用需要使用觸控筆操作的觸摸屏。 “ finger”應用需要可以用手指操作的觸摸屏。 注意:如果您的應用需要某些類型的觸摸輸入,則應改用
<uses-feature>標記來聲明所需的觸摸屏類型(從表示基本觸摸樣式事件的"android.hardware.faketouch"開始)。
<uses-library>
注意:Google Play 使用您的應用清單中聲明的 <uses-library> 元素,從不符合其庫要求的設備中過濾掉您的應用。如需詳細了解如何過濾,請參閱 Google Play 過濾器一文。
- 語法:
-
<uses-library android:name="string" android:required=["true" | "false"] /> - 包含于:
<application>- 說明:
- 指定應用必須與之關聯的共享庫。此元素告知系統將庫的代碼添加到軟件包的類加載器中。
所有
android軟件包(例如android.app、android.content、android.view和android.widget)都位于所有應用自動與之關聯的默認庫中。不過,某些軟件包(例如maps)位于未自動關聯的獨立庫中。請參閱您使用的軟件包的相關文檔,確定哪個庫包含軟件包代碼。此元素還會影響應用在特定設備上安裝以及應用在 Google Play 上的可用性:
- 安裝
- 如果此元素存在并且其
android:required屬性設置為true,則PackageManager框架將不允許用戶安裝應用,除非用戶設備上存在相應的庫。
下一部分詳細介紹了
android:required屬性。 - 屬性:
android:name- 庫的名稱。此名稱由您使用的軟件包的文檔提供。例如,“
android.test.runner”是一個包含 Android 測試類的軟件包。 android:required- 布爾值,指示應用是否需要
android:name指定的庫:"true":如果沒有此庫,則應用將無法正常運行。系統不允許在沒有此庫的設備上安裝應用。"false":應用可以使用此庫(如果存在),但專門在沒有此庫的情況下運行(如果有必要)。系統允許安裝應用,即使不存在此庫也是如此。如果您使用"false",則需要在運行時檢查有沒有此庫。要檢查庫,您可以使用反射來確定有沒有特定類。
默認值為
"true"。引入于:API 級別 7。
<uses-permission>
注意:在某些情況下,您通過 <uses-permission> 請求的權限可影響 Google Play 如何過濾您的應用。
如果您請求硬件相關的權限(例如 CAMERA),則 Google Play 會假設您的應用需要底層硬件功能,并從設備過濾掉不提供該功能的應用。
要控制過濾,務必在 <uses-feature> 元素中顯式聲明硬件功能,而不是依賴 Google Play“發現” <uses-permission> 元素中的要求。然后,如果要對特定功能停用過濾,可將 android:required="false" 屬性添加到 <uses-feature> 聲明中。
有關暗示硬件功能的權限列表,請參閱 <uses-feature> 元素的文檔。
- 語法:
-
<uses-permission android:name="string" android:maxSdkVersion="integer" /> - 包含它的文件:
<manifest>- 說明:
- 指定用戶必須授予的系統權限,以便應用正常運行。當(在運行 Android 5.1 和更低版本的設備上)安裝應用或(在運行 Android 6.0 和更高版本的設備上)運行應用時,用戶會授予權限。
如需了解有關權限的詳細信息,請參閱簡介的權限部分和單獨的系統權限 API 指南。您可以在
android.Manifest.permission中找到基礎平臺定義的權限列表。 - 屬性:
android:name- 權限的名稱。可以是應用通過
<permission>元素定義的權限、另一個應用定義的權限,或者一個標準系統權限(例如"android.permission.CAMERA"或"android.permission.READ_CONTACTS")。如這些示例所示,權限名稱通常以軟件包名稱為前綴。 android:maxSdkVersion- 此權限應授予應用的最高 API 級別。如果從某個 API 級別開始不再需要應用所需的權限,則設置此屬性非常有用。
例如,從 Android 4.4(API 級別 19)開始,應用在外部存儲空間寫入其特定目錄(
getExternalFilesDir()提供的目錄)時不再需要請求WRITE_EXTERNAL_STORAGE權限。但 API 級別 18 和更低版本需要此權限。因此,您可以使用如下聲明,聲明只有 API 級別 18 及以前版本才需要此權限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />這樣,從 API 級別 19 開始,系統將不再向您的應用授予
WRITE_EXTERNAL_STORAGE權限。此屬性為 API 級別 19 中的新增屬性。
<uses-permission-sdk-23>
- 語法:
-
<uses-permission-sdk-23 android:name="string" android:maxSdkVersion="integer" /> - 包含它的文件:
<manifest>- 說明:
- 指明應用需要特定權限,但僅當應用在 Android 6.0(API 級別 23)或更高版本的設備上安裝時才需要。如果設備運行的是 API 級別 22 或更低版本,則應用沒有指定的權限。
當您更新應用以包含需要其他權限的新功能時,此元素很有用。如果用戶在運行 API 級別 22 或更低版本的設備更新應用,系統在安裝時會提示用戶授予在該更新中聲明的所有新權限。如果某個新功能無關緊要,您可能想同時在這些設備上停用該功能,以便用戶不需要授予額外權限即可更新應用。如果使用
<uses-permission-sdk-23>元素而非<uses-permission>,則僅當應用在支持運行時權限模式(用戶在應用運行時向其授予權限)的平臺上運行時才可請求權限。如需了解有關權限的詳細信息,請參閱簡介的權限部分和單獨的系統權限 API 指南。您可以在
android.Manifest.permission中找到基礎平臺定義的權限列表。 - 屬性:
android:name- 權限的名稱。此權限可以是應用通過
<permission>元素定義的權限、另一個應用定義的權限,或者一個標準系統權限(例如"android.permission.CAMERA"或"android.permission.READ_CONTACTS")。 android:maxSdkVersion- 此權限應授予應用的最高 API 級別。如果應用安裝在 API 級別較高的設備上,則應用不會被授予權限,無法使用任何相關功能。

浙公網安備 33010602011771號