boolean isHasAudioPermission = CheckAudioPermission.isHasPermission(MainActivity.this);
if (PackageManager.PERMISSION_GRANTED != ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) || isHasAudioPermission == false) {
ActivityCompat.requestPermissions(this, PERMISSION_AUDIO, REQUEST_PERMISSION_CAMERA);
}
/**
* 一个或多个权限请求结果回调
*
* @param requestCode
* @param permissions
* @param grantResults
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
boolean hasAllGranted = true;
switch (requestCode) {
case PERMISSION_REQUEST_CODE:
for (int i = 0; i < grantResults.length; ++i) {
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
hasAllGranted = false;
//在用户已经拒绝授权的情况下,如果shouldShowRequestPermissionRationale返回false则
// 可以推断出用户选择了“不在提示”选项,在这种情况下需要引导用户至设置页手动授权
if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) {
CustomDialog dialog = new CustomDialog(this, R.style.MyCustomDialog, getString(R.string.cancel), getString(R.string.hint), getString(R.string.permission_camera), getString(R.string.Apply), R.drawable.ic_launcher, new CustomDialogListener() {
@Override
public void OnClick(View view) {
// TODO Auto-generated method stub
switch (view.getId()) {
case R.id.positiveButton:
finish();
break;
case R.id.negativeButton:
//请求权限
//解释原因,并且引导用户至设置页手动授权
//引导用户至设置页手动授权
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getApplicationContext().getPackageName(), null);
intent.setData(uri);
startActivityForResult(intent, REQUEST_PRE_SET);
break;
}
}
});
dialog.setCancelable(false);
dialog.show();
} else {
//权限请求失败,但未选中“不再提示”选项
}
break;
}
}
if (hasAllGranted) {
//权限请求成功
}
break;
case REQUEST_PERMISSION_CAMERA:
for (int i = 0; i < grantResults.length; ++i) {
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
hasAllGranted = false;
//在用户已经拒绝授权的情况下,如果shouldShowRequestPermissionRationale返回false则
// 可以推断出用户选择了“不在提示”选项,在这种情况下需要引导用户至设置页手动授权
if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) {
CustomDialog dialog = new CustomDialog(this, R.style.MyCustomDialog, getString(R.string.cancel), getString(R.string.hint), getString(R.string.permission_camera), getString(R.string.Apply), R.drawable.ic_launcher, new CustomDialogListener() {
@Override
public void OnClick(View view) {
// TODO Auto-generated method stub
switch (view.getId()) {
case R.id.positiveButton:
break;
case R.id.negativeButton:
//请求权限
//解释原因,并且引导用户至设置页手动授权
//引导用户至设置页手动授权
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getApplicationContext().getPackageName(), null);
intent.setData(uri);
startActivityForResult(intent, REQUEST_PRE_CAMERA);
break;
}
}
});
dialog.setCancelable(false);
dialog.show();
} else {
//权限请求失败,但未选中“不再提示”选项
}
break;
}
}
if (hasAllGranted) {
//权限请求成功
}
break;
case GET_RECODE_AUDIO:
for (int i = 0; i < grantResults.length; ++i) {
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
hasAllGranted = false;
//在用户已经拒绝授权的情况下,如果shouldShowRequestPermissionRationale返回false则
// 可以推断出用户选择了“不在提示”选项,在这种情况下需要引导用户至设置页手动授权
if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) {
CustomDialog dialog = new CustomDialog(this, R.style.MyCustomDialog, getString(R.string.cancel), getString(R.string.hint), getString(R.string.permission_camera), getString(R.string.Apply), R.drawable.ic_launcher, new CustomDialogListener() {
@Override
public void OnClick(View view) {
// TODO Auto-generated method stub
switch (view.getId()) {
case R.id.positiveButton:
break;
case R.id.negativeButton:
//请求权限
//解释原因,并且引导用户至设置页手动授权
//引导用户至设置页手动授权
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getApplicationContext().getPackageName(), null);
intent.setData(uri);
startActivityForResult(intent, REQUEST_PRE_AUDIO);
break;
}
}
});
dialog.setCancelable(false);
dialog.show();
} else {
//权限请求失败,但未选中“不再提示”选项
}
break;
}
}
if (hasAllGranted) {
//权限请求成功
}
break;
}
}
Anaroid6.0以上权限请求拒绝允许监听
最新推荐文章于 2022-09-13 13:52:23 发布