Android授權(quán)app源碼函數(shù)微解讀二

參考:
Android (6.0) M 請求權(quán)限

(5)簡單說下請求權(quán)限的流程
App-->Activity.requestPermissions-->然后startActivityForResult-->然后調(diào)到PackageInstaller里面的GrantPermisslonsActivity,然后show給用戶看,你需要不需要申請權(quán)限。如果同意->就調(diào)用PMS的grantRuntimePermission獲取到權(quán)限并且調(diào)用setResuletAndFinsh函數(shù)CallBack返回給
App--app只要需要在Activity中重寫OnRequestPermissionResult方法。
(2)Activity Intent的內(nèi)容Action就是ACTION.Request_permissionS 數(shù)據(jù)包就是permission.name

6.Apk安裝時會判斷權(quán)限類型,對于dangerous的權(quán)限,會判定為runtimePermission,安裝時不會對User賦予此權(quán)限.
其他類型的權(quán)限,則安裝時賦予給所有的User
grantPermissionsLpw --獲取權(quán)限的接口
-writeRuntimePermissionsForUserLpr 寫入xml
對應的runtime-permissionos.xml 每個user維護一份

com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java

getPackageManager().updatePermissionFlags

com/android/server/pm/PackageManagerService.java
中發(fā)現(xiàn)的另一組調(diào)用鏈

updatePermissionFlags --> mSettings.writeRuntimePermissionsForUserLPr(userId, false)

還有一個類,com/android/server/pm/DefaultPermissionGrantPolicy.java,應該是給系統(tǒng)APP默認授權(quán)的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,003評論 2 59
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,334評論 0 17
  • Android系統(tǒng)在MarshMallow之前,權(quán)限都是在安裝的時候授予的,雖然在4.3時,Google就試圖在源...
    看書的小蝸牛閱讀 18,205評論 7 47
  • 前言 Android將安全設計貫穿系統(tǒng)架構(gòu)的各個層面,覆蓋系統(tǒng)內(nèi)核、虛擬機、應用程序框架層以及應用層各個環(huán)節(jié),力求...
    FeelsChaotic閱讀 9,494評論 4 17
  • 雨滴掛在頭發(fā)上 蓑衣裹住了冰涼 江邊的小船撐不起悔怨 怨那人已經(jīng)不再關(guān)心潮濕的悲傷 難走的路還是要走 想明明白白 ...
    黎青辰閱讀 311評論 0 3

友情鏈接更多精彩內(nèi)容