一、基本概念
Permission是Android系統中的一個非常重要的概念,用於控制應用程序的安全訪問。系統會對應用程序進行許可權管理,只有在獲得相應的許可權之後,應用程序才能夠訪問相關的資源或者進行相應的操作。
在AndroidManifest.xml文件中,聲明許可權就是通過Permission來實現的,而在Java代碼中判斷是否有許可權的方法,則是利用PackageManager中的checkPermission()方法來實現的。
二、許可權分類
在Android系統中,許可權可以分為兩種類型,分別是Normal Permission和Dangerous Permission。
1. Normal Permission
Normal Permission比較常規,涉及的許可權都是一些低風險的行為,例如訪問網路、控制閃光燈等等,所有應用程序默認都授權訪問這些許可權。當然,如果應用程序不需要這些許可權,也可以在AndroidManifest.xml中聲明禁止訪問這些許可權。
2. Dangerous Permission
Dangerous Permission包括了許多敏感信息和操作,例如讀取聯繫人、訪問通話記錄、獲取位置信息等等,這些許可權都需要經過用戶同意之後才可以訪問。當應用程序需要這些許可權時,系統會彈出一個授權頁面,詢問用戶是否同意,這需要程序員在Java代碼中編寫相應的授權邏輯。
三、許可權名稱縮寫
在Android系統中,許可權名稱非常長,因此Android引入了一些縮寫來方便開發者進行代碼編寫。許可權縮寫的格式為”android.permission.PERMISSION_NAME”。
常見許可權名稱和縮寫
許可權名稱 許可權縮寫android.permission.INTERNET 網路訪問android.permission.SEND_SMS 發送簡訊android.permission.CALL_PHONE 撥打電話android.permission.READ_PHONE_STATE 讀取手機狀態android.permission.WRITE_EXTERNAL_STORAGE 寫入外部存儲android.permission.READ_CONTACTS 讀取聯繫人android.permission.RECORD_AUDIO 錄音android.permission.ACCESS_FINE_LOCATION 訪問GPS(全球定位系統)
四、許可權的使用
1. AndroidManifest.xml中聲明許可權
在AndroidManifest.xml中,可以聲明需要使用的許可權,這樣Android系統就會在用戶安裝應用程序時向用戶提示需要使用哪些許可權。聲明許可權的方式為:
<manifest> <uses-permission android:name="android.permission.PERMISSION_NAME" /> <application> ... </application></manifest>
其中,<uses-permission>標籤用於聲明使用的許可權。例如,下面的代碼聲明了讀取聯繫人信息的許可權:
<manifest> <uses-permission android:name="android.permission.READ_CONTACTS" /> <application> ... </application></manifest>
2. Java代碼中獲取和判斷許可權
在Java代碼中,可以通過PackageManager類的checkPermission()方法來判斷該應用程序是否具有某一個許可權。如果用戶尚未授權該應用程序訪問該許可權,則該方法將返回PackageManager.PERMISSION_DENIED,否則將返回PackageManager.PERMISSION_GRANTED。
例如,下面的代碼判斷是否具有讀取聯繫人的許可權:
if (context.checkPermission( Manifest.permission.READ_CONTACTS, Process.myPid(), Process.myUid()) == PackageManager.PERMISSION_GRANTED) { // 已授權} else { // 未授權}
五、總結
Android系統中的許可權是保證應用程序安全的一個非常重要的機制。在應用程序的開發中,需要確保只授權具備必要許可權的應用程序,避免授權過多、不必要的許可權。
原創文章,作者:JSVLJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/369621.html