Android O 8.0 運行時權(quán)限適配方案

一.序

在之前的文章聊聊Android M 6.0 的運行時權(quán)限曾提到過抚垃,Google Play開發(fā)者明年勢必要努力將targetsdkversion升級到26的過程中听皿。官網(wǎng)的文檔:向 Android 8.0 遷移應(yīng)用 已經(jīng)給大家了一個升級指南。當(dāng)然動態(tài)權(quán)限也是需要關(guān)注的一部分室埋。可能有部分開發(fā)者已經(jīng)將targetsdkversion升級到23了∷浚可是當(dāng)targetsdkversion升級到26的時候,同樣因為API的改動尤蛮,也許會遇到問題媳友。本文來介紹一下。這其中會遇到的問題产捞。以及解決方案醇锚。

二.Android O(8.0)運行時權(quán)限策略變化

借用官網(wǎng)的文檔

權(quán)限

在 Android 8.0 之前,如果應(yīng)用在運行時請求權(quán)限并且被授予該權(quán)限坯临,系統(tǒng)會錯誤地將屬于同一權(quán)限組并且在清單中注冊的其他權(quán)限也一起授予應(yīng)用搂抒。

對于針對 Android 8.0 的應(yīng)用艇搀,此行為已被糾正。系統(tǒng)只會授予應(yīng)用明確請求的權(quán)限求晶。然而焰雕,一旦用戶為應(yīng)用授予某個權(quán)限,則所有后續(xù)對該權(quán)限組中權(quán)限的請求都將被自動批準(zhǔn)芳杏。

例如矩屁,假設(shè)某個應(yīng)用在其清單中列出 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE。應(yīng)用請求 READ_EXTERNAL_STORAGE,并且用戶授予了該權(quán)限。如果該應(yīng)用針對的是 API 級別 24 或更低級別衩婚,系統(tǒng)還會同時授予 WRITE_EXTERNAL_STORAGE莱预,因為該權(quán)限也屬于同一 STORAGE 權(quán)限組并且也在清單中注冊過。如果該應(yīng)用針對的是 Android 8.0但壮,則系統(tǒng)此時僅會授予 READ_EXTERNAL_STORAGE;不過,如果該應(yīng)用后來又請求 WRITE_EXTERNAL_STORAGE约郁,則系統(tǒng)會立即授予該權(quán)限,而不會提示用戶但两。

總結(jié):

  1. 以前鬓梅,申請一個子權(quán)限會自動獲取權(quán)限組中其他子權(quán)限。組內(nèi)其他子權(quán)限可以直接使用谨湘。
  2. 現(xiàn)在绽快,申請一個子權(quán)限,組內(nèi)其他子權(quán)限不會自動獲取紧阔。使用組內(nèi)其他子權(quán)限的時候坊罢。需要再次申請。(但是這種情況不會彈出系統(tǒng)的權(quán)限申請框)如果不申請擅耽。會FC活孩。

三.解決方案:

3.1 權(quán)限分組

同組權(quán)限一起申請。當(dāng)我們申請權(quán)限時秫筏。申請同組的多個權(quán)限時诱鞠,也只會彈出一次申請框。所以不如一起申請这敬。

public class PermissionGroup {

 ......

 //Storage權(quán)限
 protected static String[] ABS_STORAGE = new String[] {
      Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE
      };
      
 //Phone權(quán)限
 protected static String[] ABS_PHONE = new String[] {
          Manifest.permission.READ_PHONE_STATE, Manifest.permission.CALL_PHONE,
          Manifest.permission.READ_CALL_LOG, Manifest.permission.WRITE_CALL_LOG,
          Manifest.permission.USE_SIP, Manifest.permission.PROCESS_OUTGOING_CALLS
      };
      
 ......
 
}

3.2 控制權(quán)限組粒度

因為機型問題航夺,本以為可以定義好通用的PHONE權(quán)限,然后一起申請崔涂,可是這也依賴于App中Manifest列表里具體聲明了哪些權(quán)限阳掐。假如我們僅僅在Manifest中聲明了<uses-permission android:name="android.permission.READ_PHONE_STATE"/>權(quán)限。卻要申請Phone組內(nèi)的全部權(quán)限。有些機型會返回授權(quán)失敗缭保。所以控制粒度汛闸。

public class PermissionConstant extends PermissionGroup {

  public static String[] PHONE;
  public static String[] STORAGE;

  static {

    PHONE = new String[] {
        Manifest.permission.READ_PHONE_STATE
    };
    
    STORAGE = ABS_STORAGE;
  }
}

3.3 申請整個權(quán)限組。

所以當(dāng)我們申請權(quán)限的時候艺骂,就直接申請整組權(quán)限吧诸老。這樣就會完美適配Android O了。

后續(xù)會用一個組件來解決這個問題钳恕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末别伏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子忧额,更是在濱河造成了極大的恐慌厘肮,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睦番,死亡現(xiàn)場離奇詭異类茂,居然都是意外死亡,警方通過查閱死者的電腦和手機托嚣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門巩检,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人注益,你說我怎么就攤上這事碴巾∷堇Γ” “怎么了丑搔?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長提揍。 經(jīng)常有香客問我啤月,道長,這世上最難降的妖魔是什么劳跃? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任谎仲,我火速辦了婚禮,結(jié)果婚禮上刨仑,老公的妹妹穿的比我還像新娘郑诺。我一直安慰自己,他們只是感情好杉武,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布辙诞。 她就那樣靜靜地躺著,像睡著了一般轻抱。 火紅的嫁衣襯著肌膚如雪飞涂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音较店,去河邊找鬼士八。 笑死,一個胖子當(dāng)著我的面吹牛梁呈,可吹牛的內(nèi)容都是我干的婚度。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼官卡,長吁一口氣:“原來是場噩夢啊……” “哼陕见!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起味抖,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤评甜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后仔涩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忍坷,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年熔脂,在試婚紗的時候發(fā)現(xiàn)自己被綠了佩研。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡霞揉,死狀恐怖旬薯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情适秩,我是刑警寧澤绊序,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站秽荞,受9級特大地震影響骤公,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扬跋,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一阶捆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钦听,春花似錦洒试、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至余指,卻和暖如春捕犬,著一層夾襖步出監(jiān)牢的瞬間跷坝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工碉碉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留柴钻,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓垢粮,卻偏偏與公主長得像贴届,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蜡吧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

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