怎么说(试图压住一推火气),这沙雕问题硬是让我忙碌了一整天,不得不服气啊!或许是技不如神吧!
正常情况下,提示框AlertDialog不显示的两种确定性可能,1、bule参数不是当前activity,2、当前activity继承Compleactivity并没有设置主题。
其他情况有待大家来补充,然而,这次发现了另外一种情况,就是在if权限条件判断下无显示情况,下面贴出代码,欢迎大家去测试。
private void requestPermissions() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_COARSE_LOCATION)
|| ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION)) {
Log.e("TAG------>>>", "requestPermissions: " + "这是被拒绝后的处理");
setAlertDialog();
} else {
Log.e("TAG------", "requestPermissions: " + "申请位置权限了");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 200);
}
}
/**
* 弹窗提示
*/
private void setAlertDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//builder.setView(linearLayout);
builder.setTitle("权限申请");
builder.setMessage("感谢使用,为了您更好的使用体验," +
"请授予应用获取位置的权限,否则您可能无法正常使用,谢谢您的支持。");
builder.setCancelable(false);
builder.setPositiveButton("去开启", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, 1315);
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.show();
}
注:这种情况在Android11版本上出现,模拟器测试(Android9.0)没问题,在vivo手机(Android10),华为鸿蒙系统手机测试出现不显示情况。