Android“ Screen Overlay Detected”消息,如果用户试图在显示通知时授予权限

我有一台 Nexus 6的 Android M,我正在尝试解决以下问题:

如果用户试图在显示通知时授予权限,那么将显示“屏幕覆盖检测”消息,并且请求权限对话框将消失——当然,应用程序不会获得所请求的权限。(检查截图)

我试图通过在清单中添加“ DRAW OVER OTHER APPS”权限-android.permission. System _ ALERT _ Window 来修复这个问题,但是没有成功。

PS: 我肯定问题是由通知引起的。我没有安装任何应用程序覆盖其他应用程序,我甚至关闭了所有应用程序“绘制其他应用程序”的权限在设置。没有帮助。.

有人知道怎么解决这个问题吗?

enter image description here

83689 次浏览
  1. 删除有屏幕覆盖的应用程序,如 CM 安全,清洁主机等。

  2. 甚至删除和尝试与信使(FB 应用程序) ,如果需要。

卸载清洁主应用程序。我卸载了它,问题解决了

从这里和其他论坛的多个答案中得到了见解

巩固我如何摆脱这个问题:

  1. 进入设置 > 应用程序 > (你的应用程序出问题了)
  2. 按下电源按钮直到窗口关闭电源,重新启动,飞行模式出现
  3. 保持关闭电源选项
  4. 在安全模式下选择重新启动
  5. 进入设置 > 应用程序 > (你的应用程序出问题了)
  6. 选择所需的权限
  7. 在 Android M 升级之后,像 Messenger,Whatsapp,Prisma 等应用程序会出现问题。

有什么问题就告诉我。

注意: 我有一加一移动。

您必须为您在列表中看到的所有应用程序禁用覆盖。只有这样,您才能修改您需要的应用程序中的授权。 我在安全模式下做过,成功了。 最后我重新启动了手机,现在它运行良好。

我更新了我的索尼 Xperia Z3(双 Sim)到 Android 6.0.1(Marsmallow)。我有屏幕重叠的问题。对我来说,我没有清洁大师,杜速度,或杜助推器(作为解决方案,我已经阅读)。

所以我解决了我的,寻找任何屏幕覆盖应用程序。

屏幕重叠应用程序,是一个应用程序,你可以用来访问其他应用程序在你的主屏幕上,而不离开你的主屏幕。所以对我来说,屏幕覆盖应用程序在我的情况是 OMNI SWIPE。因此,如果你正面临这个问题,你需要冷静下来,并检查你的应用程序符合屏幕覆盖应用程序的定义。

找到应用程序并卸载,然后重新启动您的手机。

我刚刚做完这个,在电话上玩得很开心

祝你好运

我刚刚删除了我的应用程序,关掉了我的 Nexus 6P。重新打开后,我重新安装了应用程序,不再得到“屏幕覆盖”对话框时,给予应用程序的权限。

这个问题的出现是因为一些罪魁祸首的应用,如暮光之城,清洁大师,核果等..。

要解决这个问题,你必须禁用屏幕覆盖的罪魁祸首应用程序。

我有 G4 + ,这就是我解决这个问题的方法

进入设置-> 选择应用程序-> 再次选择应用程序中的设置图标-> 选择绘制其他应用程序-> 并禁用对其他应用程序造成麻烦的罪魁祸首应用程序。

我所做的就是通过禁用这个权限来检查每个应用程序并尝试运行我的应用程序,然后我发现一个应用程序和其他应用程序有这样麻烦的叠加,所以最后我只禁用了这个应用程序。

截图:

Select Apps select configure setting

select draw over other appsdisable culprit apps

在我偶然遇到的情况下,是我自己造成了这个问题。这是在我请求许可的同时使用 Toast向用户显示信息的结果。这两个操作一起导致了这种类型的错误。

其他的答案可能会解决其他人的问题。但是我想要指出的是,您应该小心谨慎,以免导致您自己的覆盖错误。在请求允许的同时,要小心在视图中覆盖某些内容。

只要 Android 6.x 在某些设备上存在 bug,而这些设备在没有任何原因的情况下就会显示这个“覆盖警报”(根据我的分析数据,有2% 到5% 的设备都会显示) ,最好的解决方案就是通过将 targetSdk 定义为22来避免整个许可过程。

注意不要为了新版本而降低目标 sdk 的等级,否则当用户更新时需要卸载/安装应用程序时,会出现 INSTALL _ FAILED _ PERMISION _ DOWNGRADE 错误。

我在安装一个新的应用程序时遇到了这个问题。 我解决这个问题的方法是手动为新安装的应用程序启用权限(在运行应用程序之前)。 我敢肯定这是一个问题,特别是安卓和三星的设备。 希望这个能帮上忙

解决办法就是

OnRequestPermission 结果方法中删除 干杯消息

当您授予恶意应用程序覆盖权限时,就会发生这种情况。去覆盖设置和禁用所有应用程序的覆盖功能,不属于谷歌,你将是好去。

此弹出窗口是由清单声明的 系统 _ 警报 _ 窗口权限引起的。

开发人员必须了解以下三类权限:

普通权限-不使用它们,只在清单中声明

脆弱权限 -在 Manifest 中声明并首次请求权限。它们可以通过系统设置更改。

以上危险权限: 窗口WRITE _ Settings 写设置属于此类别。它们必须被授予,但在系统设置中不可见。为了请求它,你不使用标准的方式(int checkSelfPermission (字符串权限)) ,但是你必须适当地检查 Settings.canDrawOverlay ()设置 System.canWrite (),如果你不这样做,你会得到像

无法添加 window android.view. ViewRootImpl $W@1de28ad ——此窗口类型的权限被拒绝

1-在代码中自己申请这个权限,如下所示:

public class MainActivity extends AppCompatActivity {


public final static int REQUEST_CODE = 10000;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (checkDrawOverlayPermission()) {
Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
}
}


public boolean checkDrawOverlayPermission() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return true;
}
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_CODE);
return false;
} else {
return true;
}
}


@Override
@TargetApi(Build.VERSION_CODES.M)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
if (Settings.canDrawOverlays(this)) {
Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
}
}
}