---
title: Hide non-system overlays
description: Starting at API 31 (Android 12), Android introduced a definitive feature to protect against malicious overlays. To use this feature, call the method setHideOverlayWindows(true) on your specified activity windows.
---

[![guardsquare-logo](https://insights.guardsquare.com/hs-fs/hubfs/Logos/logo-white.png?length=536&name=logo-white.png "guardsquare-logo") ](https://23593082.hs-sites.com/)

- pricing

[Request Pricing](https://www.guardsquare.com/request-pricing?hsCtaTracking=646b0379-d596-4b1a-8526-2ccbdbb0f81b%7Ce8809087-a83f-4476-8b22-34b9572013fd)

[Login](https://customers.guardsquare.com/login?utm_referrer=https%3A%2F%2Fwww.guardsquare.com%2F)

En

- [中文](https://www.guardsquare.com/zh-hans)
- [한국어](https://www.guardsquare.com/ko)
- [Português](https://www.guardsquare.com/pt-br)
- [Español](https://www.guardsquare.com/es)

# [Mobile Application]

# Security Research Center

 Table of contents

# Hide non-system overlays

**Guardsquare recommended technique**

|   | **Technique summary** |
| --- | --- |
| **Technique** | Hide non-system overlays |
| **Against** | [View injections](https://23593082.hs-sites.com/knowledgebasetest/attacks/overlay-attacks) |
| **Limitations** | API Level ≥31 (Android ≥12) |
|   | Does not protect against Activity injections |
| **Side effects** | None |
| **Recommendations** | Recommended for use [combined with other techniques](https://23593082.hs-sites.com/knowledgebasetest/attacks/overlay-attacks). |

Starting at API 31 (Android 12), Android introduced a definitive feature to protect against malicious overlays. To use this feature, call the method `setHideOverlayWindows(true)` on your specified activity windows.

Apply this to every activity view that requests sensitive information from the user, such as pin codes, passwords, credit card details, etc. Doing so will prevent non-system overlays from obscuring such views on recent Android versions.

 Button detectOverlayButton = (Button)findViewById(R.id.btnDetect); detectOverlayButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MainActivity.this.getWindow().setHideOverlayWindows(true); } });

 

 

## [Guardsquare](https://23593082.hs-sites.com/knowledgebasetest/author/guardsquare)

Connect with the author

** Table of contents **

![HubSpot CMS](https://cdn2.hubspot.net/hubfs/302335/hubspot-cms-logo-gray.svg "HubSpot CMS")

[General Terms](https://23593082.hs-sites.com/terms-of-use) | [Privacy Policy](https://23593082.hs-sites.com/privacy-policy) | [Cookie Policy](https://23593082.hs-sites.com/cookie-policy)

Tervuursevest 362 bus 1, 3000 Leuven, Belgium | VAT: BE0550675829 |

© 2016-2026 Guardsquare nv. All rights reserved.

<https://www.facebook.com/guardsquare> <https://twitter.com/Guardsquare> <https://www.linkedin.com/company/guardsquare/> <https://www.youtube.com/channel/UCP9s5F1ksT1E-7vSF2CDyhw> <https://github.com/Guardsquare>

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Guardsquare",
    "url" : "https://23593082.hs-sites.com/knowledgebasetest/author/guardsquare"
  },
  "dateModified" : "2024-02-22T17:19:02.835Z",
  "datePublished" : "2024-02-13T19:09:27.000Z",
  "headline" : "Hide non-system overlays",
  "mainEntityOfPage" : {
    "@id" : "https://23593082.hs-sites.com/knowledgebasetest/defense/overlay-hide-non-system",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject"
    }
  }
}
```