如果在Android应用中,按钮点击时权限对话框不显示,可以按照以下步骤进行排查和解决:
private static final int PERMISSION_REQUEST_CODE = 123;
// 在按钮点击事件中,请求所需的权限
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, PERMISSION_REQUEST_CODE);
} else {
// 权限已授予,执行相应操作
// ...
}
}
});
// 处理权限请求结果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限已授予,执行相应操作
// ...
} else {
// 权限被拒绝,可以给用户一些提示或执行其他操作
// ...
}
}
}
private static final int OVERLAY_PERMISSION_REQUEST_CODE = 456;
// 请求SYSTEM_ALERT_WINDOW权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(MainActivity.this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, OVERLAY_PERMISSION_REQUEST_CODE);
}
// 在onActivityResult()方法中处理权限请求结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == OVERLAY_PERMISSION_REQUEST_CODE) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Settings.canDrawOverlays(MainActivity.this)) {
// 权限已授予,执行相应操作
// ...
} else {
// 权限被拒绝,可以给用户一些提示或执行其他操作
// ...
}
}
}
通过排查以上步骤,可以解决Android应用中按钮点击时权限对话框不显示的问题。
上一篇:Android - 按钮超出屏幕边缘,但文本视图适应屏幕。
下一篇:Android - AOSP - WorkManager运行时错误 - java.lang.NoClassDefFoundError: 解析失败:Landroidx/work/R$bool