Android6.0普通权限normal permission 和 危险权限dangerous permission
Normal Permission:写在xml文件里,那么App安装时就会默认获得这些权限,即使是在Android6.0系统的手机上,用户也无法在安装后动态取消这些normal权限,这和以前的权限系统是一样的,不变。
Dangerous Permission:还是得写在xml文件里,但是App安装时具体如果执行授权分以下几种情况:
1、targetSDKVersion < 23 & API(手机系统) < 6.0 :安装时默认获得权限,且用户无法在安装App之后取消权限。
3、targetSDKVersion < 23 & API(手机系统) >= 6.0 :安装时默认获得权限,但是用户可以在安装App完成后动态取消授权( 取消时手机会弹出提醒,告诉用户这个是为旧版手机打造的应用,让用户谨慎操作 )。
2、targetSDKVersion >= 23 & API(手机系统) < 6.0 :安装时默认获得权限,且用户无法在安装App之后取消权限。
4、targetSDKVersion >= 23 & API(手机系统) >= 6.0 :安装时不会获得权限,可以在运行时向用户申请权限。用户授权以后仍然可以在设置界面中取消授权,用户主动在设置界面取消后,在app运行过程中可能会出现crash。
特殊情况
targetSDKVersion < 23 & API(手机系统) >= 6.0 申请 android.permission.READ_CONTACTS,安装时默认获得权限。修改targetSDKVersion为23重新安装,依旧拥有该权限。
https://blog.csdn.net/u010263943/article/details/71467877
申请未授权的单个权限,弹框提示用户:
禁止
onRequestPermissionsResult触发,再次请求该权限会再次弹框提示用户
禁止+不再提示
onRequestPermissionsResult触发,再次请求该权限不会弹框提示用户,直接触发onRequestPermissionsResult
允许
onRequestPermissionsResult触发,再次请求该权限不会弹框提示用户,直接触发onRequestPermissionsResult
申请未授权的多个权限:
依次弹框,用户处理完成后统一返回onRequestPermissionsResult。如果多个权限中存在不再提示的权限,该权限不会再次提示询问用户。
shouldShowRequestPermissionRationale
用户之前拒绝权限且未勾选不再提示返回true,其他返回false
判断用户是否勾选不再提示,onRequestPermissionsResult返回 -1 + shouldShowRequestPermissionRationale返回 false
checkSelfPermission
检查是否获取指定权限