Android權(quán)限管理變化描述

首先安利一個(gè)大家都知道的事情,Google推出了中文版Android開發(fā)文檔。


說到權(quán)限變化大家馬上就想到Android API23(6.0)之后權(quán)限系統(tǒng)大改。當(dāng)build.gradletargetSdkVersion設(shè)置小于23時(shí),會(huì)繼續(xù)引用舊版本權(quán)限管理機(jī)制,當(dāng)targetSdkVersion大于等于23時(shí),則會(huì)使用新的權(quán)限管理。

targetSdkVersion < 23


當(dāng)targetSdkVersion小于23時(shí),你的項(xiàng)目會(huì)繼續(xù)使用舊版本的權(quán)限機(jī)制:

  1. 用戶在安裝時(shí)獲取到所有權(quán)限,在使用權(quán)限時(shí)無需進(jìn)行預(yù)判斷。
  2. 雖然使用舊版的權(quán)限機(jī)制,但是在設(shè)置-App詳情中也可以找到權(quán)限管理將其關(guān)閉。如果用戶手動(dòng)來到設(shè)置將權(quán)限關(guān)閉,我們的項(xiàng)目在用到該權(quán)限時(shí)會(huì)發(fā)生Crash,所以如果使用低版本權(quán)限管理,請(qǐng)將需要用到權(quán)限的地方try-catch起來。
  3. 那些低版本權(quán)限提示彈窗都是手機(jī)廠商自定義的。他們擁有系統(tǒng)權(quán)限,在檢測到你的App使用權(quán)限時(shí)會(huì)提示用戶權(quán)限授權(quán),如果用戶拒絕則替用戶到設(shè)置中心關(guān)閉權(quán)限。
  4. 綜上,不想使用最新的權(quán)限管理,則將targetSdkVersion設(shè)置為小于23即可,并且將用到權(quán)限的代碼try-catch起來。這里需要知道不是所有的權(quán)限都可以關(guān)閉的,只有涉及用戶隱私的權(quán)限才會(huì)在設(shè)置中展示出來,方便用戶進(jìn)行手動(dòng)關(guān)閉。

targetSdkVersion >= 23


  1. 將權(quán)限分為了普通權(quán)限隱私權(quán)限,普通權(quán)限在清單文件中聲明則直接獲取。隱私權(quán)限也需要在清單文件中聲明,但是在安裝完成后,所有的隱私權(quán)限都為拒絕狀態(tài),需要在用到隱私權(quán)限時(shí)判斷權(quán)限是否開啟,否則項(xiàng)目直接發(fā)生Crash。
  2. 第一次使用隱私權(quán)限時(shí)直接彈出系統(tǒng)的權(quán)限授權(quán)彈窗,用戶授權(quán)則永久授權(quán),拒絕則無法使用此權(quán)限。第二次或者之后用到此權(quán)限我們需要做一個(gè)自己的彈窗來描述該權(quán)限的作用,然后關(guān)閉我們自己的彈窗后會(huì)彈出系統(tǒng)的權(quán)限授權(quán)彈窗,此時(shí)彈窗上會(huì)有不再提醒的提示文字,如果用戶勾選了不再提醒則再也不會(huì)提醒并且權(quán)限關(guān)閉。
  3. 檢測權(quán)限關(guān)閉并且勾選了不再提醒我們可以提示用戶到設(shè)置中心中手動(dòng)打開權(quán)限。用戶如果打開則永久授權(quán)(當(dāng)然還是可以再關(guān)閉的)。
  4. 權(quán)限組的概念也需要知道,比如獲取寫文件權(quán)限時(shí),用戶授權(quán)則會(huì)同時(shí)獲取讀文件的權(quán)限,因?yàn)樗麄儗儆谕粋€(gè)權(quán)限組。
  5. 綜上,新版本權(quán)限的適配也很簡單,主要工作是在所有用到隱私權(quán)限的地方添加權(quán)限是否授權(quán)的判斷、后續(xù)的一些判斷細(xì)節(jié)以及回調(diào)。Google寫的權(quán)限工具easypermissions是我在權(quán)限改版時(shí)用的,還是非常好用的。demo可參考官方demo。

有任何問題請(qǐng)聯(lián)系mengyuanzz@126.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容