在 Android 8.0 之前,如果應(yīng)用在運(yùn)行時(shí)請(qǐng)求權(quán)限并且被授予該權(quán)限驯镊,系統(tǒng)會(huì)錯(cuò)誤地將屬于同一權(quán)限組并且在清單中注冊(cè)的其他權(quán)限也一起授予應(yīng)用。
對(duì)于針對(duì) Android 8.0 的應(yīng)用,此行為已被糾正。系統(tǒng)只會(huì)授予應(yīng)用明確請(qǐng)求的權(quán)限。然而陨收,一旦用戶(hù)為應(yīng)用授予某個(gè)權(quán)限饭豹,則所有后續(xù)對(duì)該權(quán)限組中權(quán)限的請(qǐng)求都將被自動(dòng)批準(zhǔn)。
例如务漩,假設(shè)某個(gè)應(yīng)用在其清單中列出 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE拄衰。應(yīng)用請(qǐng)求READ_EXTERNAL_STORAGE,并且用戶(hù)授予了該權(quán)限饵骨。如果該應(yīng)用針對(duì)的是 API 級(jí)別 24 或更低級(jí)別翘悉,系統(tǒng)還會(huì)同時(shí)授予 WRITE_EXTERNAL_STORAGE,因?yàn)樵摍?quán)限也屬于同一 STORAGE 權(quán)限組并且也在清單中注冊(cè)過(guò)居触。如果該應(yīng)用針對(duì)的是 Android 8.0妖混,則系統(tǒng)此時(shí)僅會(huì)授予 READ_EXTERNAL_STORAGE;不過(guò)轮洋,如果該應(yīng)用后來(lái)又請(qǐng)求 WRITE_EXTERNAL_STORAGE制市,(即還要ActivityCompat的requestPermissions方法請(qǐng)求一遍)則系統(tǒng)會(huì)立即授予該權(quán)限,而不會(huì)提示用戶(hù)弊予。
官方地址:https://developer.android.google.cn/guide/topics/permissions/requesting.html#permissions