1.Android6.0动态申请权限
1.检查权限是否已经授予
//1.检测是否已经全部授权
private boolean checkPermission() {
String[] permissions = {Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE};
for (String permission : permissions){//只要有个没授权则都需要申请
if(ContextCompat.checkSelfPermission(this, permission)!= PackageManager.PERMISSION_GRANTED){
return false;
}
}
return true;
}
2.没有授权则申请相关权限
if(checkPermission()){//检测是否已经全部授权
takePhoto();//do something
}else {//2.没有授权则重新申请
ActivityCompat.requestPermissions(this,new String[]{
Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
},666);
}
3.处理用户授权结果
//3.回调申请授权的结果
boolean isGrant ;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 666:{
// 判断是否所有的权限都已经授予了
isGrant = true;
for (int grant : grantResults) {
if (grant != PackageManager.PERMISSION_GRANTED) {
isGrant = false;
Toast.makeText(this, "需要授权!", Toast.LENGTH_SHORT).show();
break;
}
}
if(isGrant){
takePhoto();//dosomething
}
}
}
}