前几天看了阿里云写的android6.0写的动态权限适配,觉得挺好的,记录一下。
录制所需要的权限
private static final String[] PERMISSIONS = new String[]{
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE};
检测是否有这些权限
@TargetApi(Build.VERSION_CODES.M) private void requestPermission(){ List<String> p = new ArrayList<>(); for(String permission :PERMISSIONS){ //判断出没有获取的动态权限 if(ContextCompat.checkSelfPermission(this,permission) != PackageManager.PERMISSION_GRANTED){ p.add(permission); } }
if(p.size() > 0){ requestPermissions(p.toArray(new String[p.size()]), PERMISSION_CODES); } else { //权限都已经申请 }}
申请权限的结果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSION_CODES) {
if (hasAllPermissionsGranted(grantResults)) {
//有权限
} else {
// 没有获取权限
}
}
}
//判断权限是否已经获取 private boolean hasAllPermissionsGranted(@NonNull int[] grantResults) { for (int grantResult : grantResults) { //PERMISSION_GRANTED 授予 if (grantResult == PackageManager.PERMISSION_DENIED) { return false; } } return true; }