6.0前后权限处理的变化
- Before:安装时处理权限
- After:运行时根据需求请求权限(只针对隐私权限)
</br>
权限处理
// ------------------------------------- 检查权限 -------------------------------------
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.RECORD_AUDIO)) {
// 已经授权
} else {
// 未授权
}
// ------------------------------------- 请求权限 -------------------------------------
// 调用后弹出系统权限处理窗口,由用户决定是否授权
// 拒绝授权并选了“不再询问”后以后调用requestPermissions则不会弹出窗口
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.RECORD_AUDIO}, REQUEST_CODE);
// ------------------------------------- 请求回调 ------------------------------------
/**
* 参数1:requestCode-->是requestPermissions()方法传递过来的请求码。
* 参数2:permissions-->是requestPermissions()方法传递过来的需要申请权限
* 参数3:grantResults-->是申请权限后,系统返回的结果,PackageManager.PERMISSION_GRANTED表示授权成功,PackageManager.PERMISSION_DENIED表示授权失败。
* grantResults和permissions是一一对应的
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
// ------------------------------------- 权限解释 ------------------------------------
// 仅仅一种情况下为true,就是当用户没有完全拒绝的时候(拒绝了但没选“不再询问”)
ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.RECORD_AUDIO)
</br>