文章目錄
- 權限檔案識別符號
- 權限機制
- 自定義權限
- 參考
權限檔案識別符號
??在是使用Android studio的Device File Explorer的時候,可以看到檔案的各種權限,permissions使用的10位欄位表示,

** ??在Android中,每一個應用是一個獨立的用戶,對于10位欄位的權限識別符號 drwxrwxrwx **
-
第1位:d表示檔案夾,-表示檔案
-
第2-4位:rwx,表示這個檔案的擁有者(創建這個檔案的應用)用戶對該檔案的權限
-
r:讀
-
w:寫
-
x:執行
-
第5-7位:rwx,表示跟檔案擁有者用戶同組的用戶對該檔案的權限
-
第8-10位:rwx,表示其他用戶組的用戶對該檔案的權限
權限機制
??在系統6.0之后加入了運行時權限功能,將所有權限分為了兩類:普通權限和危險權限:
??普通權限是指那些不會直接威脅到用戶安全和隱私的權限,對于這部分權限申請,只要在AndroidManifest.xml中添加權限申請,系統會自動幫我們進行授權,
??? 危險權限則表示那些可能會觸及用戶隱私或者對設備安全性造成影響的權限,如獲取設備聯系人資訊、定位設備的地理位置等,對于這部分權限申請采取運行時權限功能,除了需要在AndroidMan-ifest.xml中添加權限申請,還需要由用戶手動點擊授權才可以,
危險權限有以下9組:
2、CAMERA
- CAMERA——訪問相機設備
3、CONTACTS
- READ_CONTACTS——讀取用戶的聯系人資料
- WRITE_CONTACTS——寫入用戶的聯系人資料
- GET_CONTACTS——訪問帳戶服務中的帳戶串列
4、LOCATION
- ACCESS_FINE_LOCATION——訪問精確的位置
- ACCESS_COARSE_LOCATION——訪問大致位置
5、MICROPHONE
- RECORD_AUDIO——錄制音頻
6、PHONE
- READ_PHONE_STATE——只讀訪問電話狀態
- CALL_PHONE——在不通過撥號用戶界面的情況下發起電話呼叫
- READ_CALL_LOG——讀取用戶的呼叫日志
- WRITE_CALL_LOG——寫入(但不讀取)用戶的呼叫日志資料
- ADD_VOICEMAIL——向系統中添加語音郵件
- USE_SIP—— 使用SIP服務
- PROCESS_OUTGOING_CALLS——查看向外呼叫期間所撥打的號碼(在API 29廢棄)
7、SENSORS
- BODY_SENSORS——從傳感器中訪問資料
8、SMS
- SEND_SMS——發送SMS訊息
- RECEIVE_SMS——接收SMS訊息
- READ_SMS——讀取SMS訊息
- RECEIVE_MMS——接收WAP推送訊息
- RECEIVE_WAP_PUSH——監視傳入的MMS訊息
9、STORAGE
- READ_EXTERNAL_STORAGE——讀取外部存盤
- WRITE_EXTERNAL_STORAGE——寫到外部存盤器
??危險權限一共有9組24種權限,需要注意的是,對于每組權限,只要用戶授予了其中任何一種權限,整個權限組都會被授予給應用
自定義權限
? 除了使用系統提供的權限,我們還可以自定義權限,當我們想有一個應用的Activity可以被其他應用啟動,但是需要其他應用具備啟動的權限時,我們就可以在自己的應用中定義一個權限,其他應用只有宣告這一權限,才可以成功啟動我們的Activity,
首先,在被啟動應用的AndroidManifest檔案中宣告自定義權限,示例代碼如下:
<permission
android:name="com.example.selfpermissondemo.permisson.OPEN_ACTIVITY"
android:protectionLevel="normal"
android:label="自定義權限"
??還需要在標簽中宣告permission屬性
android:permission="com.example.selfpermissondemo.permisson.OPEN_ACTIVITY"
??在其他應用中,如果想啟動該Activity,就必須在AndroidManifest檔案中宣告該自定義權限,否則將會拋出SecurityException例外,
<uses-permission android:name="com.example.selfpermissondemo.permisson.OPEN_ACTIVITY"></uses-permission>
?name是自定義權限的名稱,protectionLevel是權限的安全級別,可以使用normal、dangerous、signature,、signatureOrSystem中的一種,label則是權限的簡短描述,
-
normal表示權限是低風險的,不會對系統、用戶或其他應用程式造成危害,
-
dangerous表示權限是高風險的,系統將可能要求用戶輸入相關資訊,才會授予此權限,
-
signature告訴Android,只有當應用程式所用數字簽名與宣告此權限的應用程式所有數字簽名相同時,才能將權限授給它,
-
signatureOrSystem告訴Android,將權限授給具有相同數字簽名的應用程式或Android包類,這一級別適用于非常特殊的情況,比如多個供應商需要通過系統影像共享功能時,
另外一個是android:permissionGroup屬性,表示一個權限組,可以將權限放在一個組中,但對于自定義權限,應該避免設定此屬性,如果確實希望設定此屬性,可以使用以下屬性代替:android.permission-group.SYSTEM_TOOLS,
參考
權限機制
Android 檔案訪問權限的四種模式
詳解Android權限機制
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/294000.html
標籤:其他
上一篇:Mac+Charles+Android+Https 抓包
下一篇:2021-07月報
