1.先请求是否有读写权限
/**
* 检测需要的权限
* 打电话、拍照、存储、读取联系人、短信手机、日历、位置、传感器、麦克风
**/
public boolean checkPermissions(String[] permissions) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return true;
}
for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
2.如果没有读写权限需要请求该权限
public static final int SELECT_PIC_BY_PICK_PHOTO = 1;
boolean isHavePermission1 = this.checkPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE});
if (isHavePermission1) {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, SELECT_PIC_BY_PICK_PHOTO);
} else {
this.requestPermission(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
3.请求存储权限
/**
* 请求需要的权限
*/
public void requestPermission(String[] permissions, int requestCode) {
List<String> needPermissions = getDeniedPermissions(permissions);
ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), REQUEST_CODE_PERMISSION);
}
/**
* 获取权限集中需要申请权限的列表
*
* @param permissions
* @return
*/
private List<String> getDeniedPermissions(String[] permissions) {
List<String> needRequestPermissionList = new ArrayList<>();
for