关于Android权限获取与检测的总结记录
1,目前的权限检测与申请,主要分为两种6.0以下和6.0以上,6.0以下又可以分为5.0以上和5.0以下(主要是因为部分厂商自己瞎JB搞,弄出一套伪动态申请)
2,6.0以下的操作系统,权限检测都是假的,Google不提动态检测权限的api,只要你在权限管理中能看到的权限,都是默认开启的,即使你在设置中手动关闭(部分厂商的5.0操作系统,也会有允许和拒绝权限的提示框),在代码中检测任然是允许的,目前主流做法是在异常中检测,如录音异常就表示没有录音权限,打开摄像头异常就表示没有摄像头权限
3,6.0以上的操作系统,可以动态获取权限状态,但用户点击不再提示,并且拒绝后,还是要自己处理
相关代码:
public class PermissionListenerUtil extends AppCompatActivity {
private PermissionListener mListener;
//权限请求的方法
public void requestRuntimePermission(Activity activity, String permission, PermissionListener listener) {
mListener = listener;
if (isMarshmallow()) {
if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
//未授权
ActivityCompat.requestPermissions(activity, new String[]{permission}, 1);
} else {
//已授权
if (Manifest.permission.RECORD_AUDIO.equals(permission)) {
if (AudioPermissionCheckUtils.checkAudioPermission(activity)) {
mListener.onGranted(); //已获取音频权限
} else {
mListener.onDenied(); //未获取音频权限
}
} else {