權(quán)限分為安全權(quán)限和危險(xiǎn)權(quán)限坯屿,其相同點(diǎn)在于兩者都在manifest中聲明颖医,不同點(diǎn)在于安全權(quán)限在app安裝時(shí)會(huì)被系統(tǒng)自動(dòng)授予降传,而危險(xiǎn)權(quán)限(android6.0 之后)要在用戶安裝完成之后绸硕,在用戶使用的時(shí)候由用戶選擇是否授予羞芍。
用戶的選擇有三種哗戈,同意,拒絕涩金,附帶一個(gè)不再詢問。
a.同意的話就是權(quán)限被授予暇仲,不需進(jìn)行要額外的工作步做。
b.拒絕的話就得額外做兩件事:1、用UI告訴用戶為什么要這個(gè)權(quán)限奈附;2全度、再次向用戶申請(qǐng)權(quán)限(即又是一個(gè)三個(gè)選擇)。
c.不再詢問分為 ????拒絕+不再詢問 ?和 ????同意+不再詢問斥滤,同意+不再詢問 不需要做額外的工作将鸵,拒絕+不再詢問就相當(dāng)于永遠(yuǎn)拒絕了權(quán)限勉盅,要開啟這個(gè)權(quán)限,只能提示用戶去設(shè)置里面去開啟該APP的對(duì)應(yīng)的權(quán)限開關(guān)顶掉,或者重新安裝app然后選擇a中的同意草娜。
在android6.0(api>23)之后
manifest中列出危險(xiǎn)權(quán)限之外,要讓用戶授予對(duì)應(yīng)權(quán)限需要以下流程痒筒。
1宰闰、檢查權(quán)限(會(huì)彈出 允許/拒絕 對(duì)應(yīng)權(quán)限的對(duì)話框 )
? ? 對(duì)于危險(xiǎn)權(quán)限,每次使用都必須被要求詢問簿透。(比如昨天允許了相機(jī)權(quán)限移袍,那么今天必須再次允許相機(jī)權(quán)限才能使用相機(jī))
method:ContextCompat.checkSelfPermission()
2、解釋權(quán)限.(若用戶在1中拒絕老充,進(jìn)入向用戶解釋為什么需要這個(gè)權(quán)限這個(gè)環(huán)節(jié)葡盗,隨后進(jìn)入環(huán)節(jié)3,如果同意直接進(jìn)入3環(huán)節(jié))
shouldShowRequestPermissionRationale().
?3啡浊、請(qǐng)求權(quán)限(向用戶請(qǐng)求權(quán)限觅够,讓用戶選擇允許/ju)
requestPermissions()?? ? ?( ? 回調(diào)函數(shù) onRequestPermissionsResult())
note:直接簡單的請(qǐng)求權(quán)限?requestPermissions()? ?詳見Github 地址?https://github.com/caltech-chen/PermissionDemo