android - Oreo 版本,WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY 不崩溃,但没有效果
问题描述
看:
if (Build.VERSION.SDK_INT >= 27) {
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
} else {
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);
}
上面的代码不会使我的应用程序崩溃,但对我的 Oreo 27 8.0.1 版本没有影响。
请参阅我的非活动类中的方法:
private void showAlertDialog(final Context context) {
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, "test", Toast.LENGTH_SHORT).show();
}
};
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
AlertDialog.Builder builder = new AlertDialog.Builder(context)
.setCancelable(false)
.setPositiveButton("OK", listener);
View view = inflater
.inflate(R.layout.row_passcode_dialog, null);
builder.setView(view);
Dialog dialog = builder.create();
if (Build.VERSION.SDK_INT >= 27) {
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
} else {
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);
}
dialog.show();
}
还要检查:即使在清单中添加了权限,仍然显示权限错误
解决方案
推荐阅读
- amazon-web-services - 在 Terraform 中找到 aws-elasticbeanstalk-ec2-role?
- jms - Message Broker 将设计与 IBM MQ 集成
- git - 如何处理 gitmodules 中过期的 url
- mysql - 如何在sql中计算具有相同id的每个值
- azure - 创建 Azure 策略问题
- django - 用 celery 和 beautifulsoup 提取数据
- python - cronjob中的python脚本没有将标准输出写入文件
- r - 如何将数据框多次复制到列表中
- python - 在 docker 容器中运行时无法将 geopandas 导入 python
- powershell - 通过 ::1 端口 22 重置连接(Windows 10 + PowerShell/cmd + OpenSSH)