Android 中 uses-feature 和 uses-permission的作用 關係和區別

dreamist發表於2016-08-25

前言

在android開發中,關於手機許可權的獲取我們在mainfest中有兩個常用的標籤,users-feature 和 uses-permission。今天我們來研究以下這兩個標籤具體的作用,以及它們之間的關係和區別。

基本功能

  1. uses-feature

作用:
定義一個該app會用到的硬體或者軟體功能。(android 系統提供的可以選擇的功能列表參考:Features Reference)。標籤的目的是用來描述該app所依賴的硬體和軟體的功能有哪些,並不負責向系統去請求許可權,比如說,app用到了相機的功能,使用者可以在uses-feature 中定義一個照相機的功能,但是這個時候app並沒有去請求系統賦予該app照相機許可權,想要正常使用照相機的話,還需要在uses-permission標籤中再去請求照相機許可權(或者在程式碼中動態地請求許可權)

語法:

屬性值含義:
屬性|含義
—|—
android:name | app需要定義的功能的名稱
android:required | 為ture時表示該功能對於app來說是必須有的,如果某一裝置不具備該功能,google play 商店將會對該裝置隱藏該app;為false時表示該功能對於app來說時非必需的,即使某一裝置不具備該功能,google play商店仍然會對該裝置顯示該app
android:glEsVersion | 指定openGL ES的版本號,只針對open GL功能

作用:

告訴系統讓系統向使用者請求指定的許可權供該app使用。

語法:

屬性值含義:
屬性|含義
—|—
android:name | app需要請求的許可權的名稱,可以時一個標準的系統許可權(系統許可權),也可以時app自己定義的一個許可權,也可以時在其它app中定義的許可權
android:maxSdkVersion | 設定需要該許可權的app API的最大版本號,因為android額有些許可權在較新的版本中沒必要再去請求了。

uses-feature 和 uses-permission 的關係和區別

由以上所述,它們兩個之間其實沒多少關係,一個負責描述app會用到什麼功能,一個負責向系統請求app所需要的許可權,它們經常會搭配在一起使用。開發者應該根據自己的實際需求來使用對應的標籤。

uses-feature的作用更像是一個過濾器,google play 商店會根據該標籤來過濾裝置,比如使用者在uses-feature中宣告瞭要使用相機,這時候在google play商店中該app就不再對沒有照相機的裝置顯示。但是,如果使用者同時也設定了uses-feature的屬性android:required 為false的話,google play商店仍然會對沒有照相機的裝置顯示該app。

uses-permission 則像是一個許可權助手,幫助app去向使用者請求app需要使用的許可權。

一個典型的例子

假如現在需要開發一個app,它是一個聊天的工具,包含給對方傳送照片的功能,所以會用到系統的照相機。但是,該app的主要功能還是聊天,就算是在一個沒有照相機的手機上也應該能夠讓它正常地使用聊天的功能。

根據以上的描述(微信就滿足上述的條件),該app的manifest檔案中可以這樣配置照相機相關的許可權和功能。

參考資料:
https://developer.android.com/guide/topics/manifest/uses-feature-element.html

https://developer.android.com/guide/topics/manifest/uses-permission-element.html

https://developer.android.com/guide/topics/security/permissions.html

http://stackoverflow.com/questions/28079449/uses-permission-vs-uses-feature

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

Android 中 uses-feature 和 uses-permission的作用 關係和區別 Android 中 uses-feature 和 uses-permission的作用 關係和區別

相關文章