權限分為安全權限和危險權限,其相同點在于兩者都在manifest中聲明,不同點在于安全權限在app安裝時會被系統自動授予,而危險權限(android6.0 之后)要在用戶安裝完成之后,在用戶使用的時候由用戶選擇是否授予。
用戶的選擇有三種,同意,拒絕,附帶一個不再詢問。
a.同意的話就是權限被授予,不需進行要額外的工作。
b.拒絕的話就得額外做兩件事:1、用UI告訴用戶為什么要這個權限;2、再次向用戶申請權限(即又是一個三個選擇)。
c.不再詢問分為 ????拒絕+不再詢問 ?和 ????同意+不再詢問,同意+不再詢問 不需要做額外的工作,拒絕+不再詢問就相當于永遠拒絕了權限,要開啟這個權限,只能提示用戶去設置里面去開啟該APP的對應的權限開關,或者重新安裝app然后選擇a中的同意。
在android6.0(api>23)之后
manifest中列出危險權限之外,要讓用戶授予對應權限需要以下流程。
1、檢查權限(會彈出 允許/拒絕 對應權限的對話框 )
? ? 對于危險權限,每次使用都必須被要求詢問。(比如昨天允許了相機權限,那么今天必須再次允許相機權限才能使用相機)
method:ContextCompat.checkSelfPermission()
2、解釋權限.(若用戶在1中拒絕,進入向用戶解釋為什么需要這個權限這個環節,隨后進入環節3,如果同意直接進入3環節)
shouldShowRequestPermissionRationale().
?3、請求權限(向用戶請求權限,讓用戶選擇允許/ju)
requestPermissions()?? ? ?( ? 回調函數 onRequestPermissionsResult())
note:直接簡單的請求權限?requestPermissions()? ?詳見Github 地址?https://github.com/caltech-chen/PermissionDemo