定位權(quán)限
api版本 | 權(quán)限 | 使用說(shuō)明 |
---|---|---|
<23 | ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION |
無(wú)需動(dòng)態(tài)請(qǐng)求,直接注冊(cè)使用位置權(quán)限 可后臺(tái)運(yùn)行 |
>=23 < 29 | ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION |
需要?jiǎng)討B(tài)請(qǐng)求權(quán)限,有“允許” / “拒絕”選項(xiàng) 可后臺(tái)運(yùn)行 |
>=29 | ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION |
需要?jiǎng)討B(tài)請(qǐng)求權(quán)限,有“始終允許” /“使用時(shí)允許”/ ”拒絕” 選項(xiàng) 只能前臺(tái)運(yùn)行 |
>=29 | ACCESS_BACKGROUND_LOCATION | 需要?jiǎng)討B(tài)請(qǐng)求權(quán)限不铆,有“允許” / ”拒絕” 選項(xiàng) 可后臺(tái)運(yùn)行,申請(qǐng)此權(quán)限要同時(shí)申請(qǐng)或已申請(qǐng)到ACCESS_COARSE_LOCATION 或ACCESS_FINE_LOCATION至少一種后臺(tái)執(zhí)行定位方能成功 |
>=30 | ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION |
需要?jiǎng)討B(tài)請(qǐng)求權(quán)限近零,有“使用時(shí)允許” /“僅本次使用時(shí)允許”/ ”拒絕” 選項(xiàng) 只能前臺(tái)運(yùn)行(注意:無(wú)“始終允許”權(quán)限了) |
>=30 | ACCESS_BACKGROUND_LOCATION | 需要?jiǎng)討B(tài)請(qǐng)求權(quán)限申請(qǐng)副砍,此權(quán)限需要已申請(qǐng)到ACCESS_COARSE_LOCATION 或ACCESS_FINE_LOCATION至少一種后臺(tái)執(zhí)行定位方能申請(qǐng),申請(qǐng)時(shí)不會(huì)彈對(duì)話窗和任何其它提示漂佩,會(huì)直接拉起應(yīng)用的定位權(quán)限設(shè)置 |
ACCESS_BACKGROUND_LOCATION補(bǔ)充說(shuō)明:
1.targetSdkVersion<29時(shí)脖含,申請(qǐng)了兩前臺(tái)權(quán)限,則默認(rèn)給予也有后臺(tái)權(quán)限投蝉;若在<29的系統(tǒng)版本調(diào)用單獨(dú)申請(qǐng)ACCESS_BACKGROUND_LOCATION养葵,則會(huì)總是拒絕狀態(tài)(無(wú)論是判斷還是申請(qǐng)),申請(qǐng)也不會(huì)彈權(quán)限框墓拜。因此需要判斷系統(tǒng)版本來(lái)決定調(diào)不調(diào)BACKGROUND權(quán)限申請(qǐng)
2.targetSdkVersion>=29時(shí)港柜,后臺(tái)權(quán)限需要前臺(tái)權(quán)限至少有一個(gè)權(quán)限申請(qǐng)且被同意了,才可以單獨(dú)申請(qǐng)后臺(tái)權(quán)限咳榜,如果沒有獲得ACCESS_COARSE_LOCATION 或ACCESS_FINE_LOCATION至少一種權(quán)限夏醉,而直接只申請(qǐng)ACCESS_BACKGROUND_LOCATION則系統(tǒng)不會(huì)展示權(quán)限申請(qǐng)框,回調(diào)權(quán)限標(biāo)為拒絕
3.targetSdkVersion>=29時(shí)涌韩,如果ACCESS_COARSE_LOCATION 或ACCESS_FINE_LOCATION至少一種權(quán)與ACCESS_BACKGROUND_LOCATION同時(shí)申請(qǐng)畔柔,當(dāng)用戶選“使用時(shí)允許”時(shí),則BACKGROUND權(quán)限會(huì)被標(biāo)為拒絕返回臣樱。若用戶選“允許”靶擦、
解決用戶選擇使用時(shí)允許的辦法,是再拒絕時(shí)再次申請(qǐng)權(quán)限雇毫,系統(tǒng)彈出“后臺(tái)定位”告之用戶玄捕。
// for... 得出 denied permissions
String[] deniedPermissions = xxxx;
if (deniedPermissions .length == 1 && Manifest.permission.ACCESS_BACKGROUND_LOCATION.equals(permissions[0]) {
requestPermission(activity, new String[]{Manifest.permission.ACCESS_BACKGROUND_LOCATION}, REQ_ONLY_BACKGROUND);
}
4.targetSdkVersion>=30時(shí),前臺(tái)申請(qǐng)權(quán)限取消了“始終允許”選項(xiàng),因此將后臺(tái)權(quán)限與前臺(tái)權(quán)限一起申請(qǐng)棚放,則一定會(huì)有后臺(tái)權(quán)限被拒的回調(diào)枚粘。因此后臺(tái)權(quán)限需要在有前臺(tái)權(quán)限的情況下,再單獨(dú)申請(qǐng)
——————————————————————————————————————————
如果該文章對(duì)您有用飘蚯,請(qǐng)點(diǎn)個(gè)贊馍迄;如果對(duì)該文章有任何意見及不解之處請(qǐng)留言福也;謝謝翻閱!E嗜Α暴凑!
——————————————————————————————————————————