1,定义请求的权限
private String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.WRITE_EXTERNAL_STORAGE};
2.验证是否有权限
public void checkPermission(){
List<String> needPermissions=new ArrayList<String>();
// 版本判断。当手机系统大于 23 时,才有必要去判断权限是否获取
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
for (int i=0;i<permissions.length;i++){
// 权限是否已经 授权 GRANTED---授权 DINIED---拒绝
if (ContextCompat.checkSelfPermission(this, permissions[i])!= PackageManager.PERMISSION_GRANTED) {
needPermissions.add(permissions[i]);
}
}
if(needPermissions.size()>0){
// 如果没有授予该权限,就去提示用户请求
showDialogTipUserRequestPermission("授权请求","请接受授权,否则无法正常使用应用",needPermissions);
}
}
}
// 提示用户该请求权限的弹出框
public void showDialogTipUserRequestPermission(String title,String message,final List<String> needPermissions) {
new AlertDialog.Builder(this)
.setTitle(title)
.setMessage(message)
.setPositiveButton("立即开启", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
startRequestPermission(needPermissions);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
}).setCancelable(false).show();
}
// 开始提交请求权限
public void startRequestPermission(List<String> needPermissions) {
String[] array = new String[needPermissions.size()];
String[] s=needPermissions.toArray(array);
ActivityCompat.requestPermissions(this, array, 321);
}