如果用户在显示通知时尝试授予权限,则显示“ Android屏幕检测到屏幕覆盖”消息


80

我在Nexus 6上安装了Android Marshmallow。我正在尝试解决以下问题:

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

我尝试通过向清单添加android.permission.SYSTEM_ALERT_WINDOW来添加“在其他应用程序上绘制”权限来解决此问题,但是没有运气。

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

有人知道该问题的解决方案吗?

在此处输入图片说明



@gsgsgs我没有任何可以覆盖其他应用程序的应用程序。无论如何,我在设置中关闭了所有具有“覆盖其他应用程序”权限的应用程序。没有帮助。正如我在问题中提到的,问题是由通知引起的,而不是由应用程序引起的。
Alexi Akl

2
这并不是您真正要在代码中“修复”的东西。这是Android中的错误(或充其量是一个经过深思熟虑的错误消息),而Google应该希望在以后的版本中对其进行修复。
学习OpenGL ES

3
当Facebook Messenger打开(在后台)时发生在我身上
Tim

1
如果有烤面包,也会发生这种情况。
GLee

Answers:


75

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

其他答案可能会解决其他人的问题。但我想指出,您应该谨慎避免造成自己的叠加层错误。在征求权限的同时,请注意不要覆盖视图中的某些内容。


4
我遇到了同样的问题,我删除了烤面包,它停止出现。
shijin

1
面对一样。删除Toast并像魅力一样工作
Dennis Anderson

1
使用此解决方案可以解决完全相同的问题。在请求许可之前,我正在显示一条吐司消息。
Sandoval0992

这为我解决了。正在Toast用于调试。这也可能是人们遇到这种情况的主要原因。
Minoru

Toast to display information to the user at the same time that I was asking for permission帮助了我..
谢兰德拉·玛达

8

卸载Clean Master应用程序。我将其卸载并解决了问题


2
我尝试过,但没有帮助。相反,它导致不必要的卸载。
user3251882'8

1
我尝试过,它确实有帮助。它导致了必要的卸载。谢谢!(Sony Xperia Z3)
贾斯汀

1
卸载不是解决方案。请检查stackoverflow.com/a/39826828/2724626以获取正确答案。
akshay

就我而言,它是Facebook Messenger,无需卸载,只需停止即可。
Hamzeh Soboh,

5

出现此问题是由于某些罪魁祸首,例如Twilight,Cleaner-Master,Drupe等。

要解决此问题,您必须为那些罪魁祸首的应用程序禁用屏幕覆盖。

我有moto g4 plus,这就是我解决这个问题的方式

转到设置->选择应用程序--->再次在应用程序中选择设置图标--->选择覆盖其他应用程序--->并禁用对其他应用程序造成麻烦的罪魁祸首应用程序。

我所做的是通过禁用此权限来检查每个应用程序并尝试运行我的应用程序,然后我发现一个应用程序与此其他应用程序造成了麻烦的重叠,因此最后我仅禁用了此应用程序。

屏幕截图:

选择应用 选择配置设置

选择绘制其他应用程序禁用罪魁祸首的应用程序


MobileGoConnector和Mobile Go未显示在我的手机中
Keshav Gera

我现在应该怎么做
Keshav Gera

1
@KeshavGera它永远不会.. bcz它不是内部应用程序,我在外部安装了它。对您来说,这将是导致重叠问题的其他应用程序。在我的情况下,这两个应用程序会导致重叠问题。
萨加尔·查瓦达

@KeshavGera你应该禁用覆盖权限检查每个应用程序..
萨加尔Chavada

3

从这里和其他论坛的多个答案中获得了见识。

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

  1. 转到“设置”>“应用”>(出现问题的应用)
  2. 按下电源按钮,直到出现关机,重启,飞行模式的窗口
  3. 保持关机选项
  4. 选择以安全模式重启
  5. 转到设置>应用>>(您遇到问题的应用)
  6. 选择所需的权限
  7. Android M更新后,Messenger,Whatsapp,Prisma等应用程序可能会出现问题。

让我知道是否有任何问题。

注意:我正在使用一加一手机。


1
但是,作为开发人员,我们希望通过编码而不是通过这种(以安全模式重启)方法来解决该问题。
Rakesh Yadav

您是正确的Rakesh,这不是理想的解决方案。但是到目前为止,我还没有其他适用于我的手机的解决方案。
user3251882

到目前为止为我工作!希望Google在Nougat +版本中修复它。
Surendra Kumar

1

我刚刚删除了我的应用并关闭了Nexus 6P。将其重新打开后,我重新安装了该应用程序,并且在授予该应用程序权限时不再显示“屏幕覆盖”对话框。


1
这更接近评论而不是答案。您可以扩展一下其工作原理。如何回答
AgataB '16

1
@AgataB我是StackOverflow的新手。当时我没有发表评论的权利,也不知道为什么关闭手机并卸载该应用程序有效,我只是认为这样做可能会有所帮助。
大学生

1

此弹出窗口是由清单声明的manifest.PERMISSION.SYSTEM_ALERT_WINDOW权限引起的。

开发人员必须注意的3类权限:

普通权限-对它们不执行任何操作,只需在清单中声明即可

脆弱的权限-在清单中声明并在第一时间请求权限。可以通过系统设置进行更改。

以上危险权限:SYSTEM_ALERT_WINDOWWRITE_SETTINGS属于此类别。必须授予它们,但它们在系统设置中不可见。要请求它,您不需要使用标准方法(int checkSelfPermission(字符串权限)),但是必须适当地检查Settings.canDrawOverlays()Settings.System.canWrite(),如果不这样做,则会得到类似的异常

无法添加窗口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();
        }
    }
}

0

您必须为列表中看到的所有应用程序禁用覆盖。只有这样,您才能在所需的应用程序中修改授权。我已经在安全模式下做到了,并且有效。最后,我重启了手机,现在一切正常。


0

我将Sony Xperia Z3(Dual Sim)更新为Android 6.0.1(Marsmallow)。我一直遇到屏幕覆盖问题。对我来说,我没有Clean Master,Du Speed或Du Booster(如我所阅读的解决方案)。

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

屏幕重叠应用程序是一种可用于访问主主屏幕上的其他应用程序而无需离开主屏幕的应用程序。因此对于我来说,我所处的屏幕覆盖应用是OMNI SWIPE。因此,如果您遇到此问题,则需要冷静下来,并检查哪个应用适合屏幕重叠式应用的定义。

找到该应用并卸载,然后重新启动手机..

我刚刚完成此操作,并且在手机中度过了愉快的时光

祝你好运


0

只要Android 6.x在某些显示“重叠警报”的设备上出现错误(根据我的分析数据显示在2%到5%的设备上)时,最好的解决方案是避免整个许可过程将targetSdk定义为22。

请注意,您不能将目标sdk降级为新版本,否则当用户更新要求卸载或安装该应用程序时,这将导致INSTALL_FAILED_PERMISSION_DOWNGRADE错误。



0

当您向恶意应用授予覆盖权限时,就会发生这种情况。转到叠加设置,并在所有不属于Google的应用程序上禁用叠加功能,您将可以使用。


-1

安装新应用时出现此问题。我解决此问题的方法是为新安装的应用程序手动启用权限(在运行该应用程序之前)。我敢肯定这是Android和Samsung设备的问题。希望这可以帮助


-4
  1. 删除带有屏幕叠加层的应用程序,例如CM安全性,Clean Master等。

  2. 甚至可以删除并根据需要尝试使用Messenger(FB应用程序)。


我尝试过,但没有帮助。相反,它导致不必要的卸载。
user3251882'8

有时,首先安装应用程序是有原因的。
艾伦·西雅克

没有。只需重新安装Clean Master应用程序和/或Facebook Messenger应用程序。这为我解决了问题。
Omkar Nibandhe '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.