防止 Android 应用程序中的屏幕捕获

发布于 2024-11-25 01:09:27 字数 175 浏览 0 评论 0原文

我想知道是否有一种方法可以通过某些“onXXXXX”回调方法或接收到的广播来检测其他进程是否要截取我的应用程序显示的屏幕截图。例如,如果 SDK 工具或某些其他屏幕捕获应用程序执行“屏幕捕获”,我希望收到通知,然后决定是否应该允许或禁止屏幕捕获。

如果这是不可能的,是否有办法锁定显示,以便其他进程无法捕获我的显示屏幕?

I was wondering if there is a way to detect through some "onXXXXX" call-back method or received broadcast if some other process is about to take a screen-shot of my app's display. For example if the SDK tools or some other screen capturing app performs a "Screen Capture", I would like to be notified and then decide if I should allow or disallow the screen capture.

If this is not possible is there a way to lock the display so no other process can screen capture my display?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清晨说晚安 2024-12-02 01:09:27

这对我在 Samsung Tab 2 7" 上

使用 以下方法 有效,只需将 FLAG_SECURE 添加到窗口标志,

public class FlagSecureTestActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getWindow().setFlags(LayoutParams.FLAG_SECURE,
                         LayoutParams.FLAG_SECURE);

    setContentView(R.layout.main);
  }
}

警告

LayoutParams

并附带您可能需要更改为的

WindowManager.LayoutParams

This worked for me on a Samsung Tab 2 7"

Using the following approach, to simply add the FLAG_SECURE to the Window Flags

public class FlagSecureTestActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getWindow().setFlags(LayoutParams.FLAG_SECURE,
                         LayoutParams.FLAG_SECURE);

    setContentView(R.layout.main);
  }
}

with the caveat that you may need to change

LayoutParams

to

WindowManager.LayoutParams
亢潮 2024-12-02 01:09:27

不支持任何方法来截取其他应用的屏幕截图安卓。唯一的方法涉及 root 或使用 SDK,这两种方法都几乎没有机会阻止您或接收其通知。如果另一个应用程序截取了您的屏幕截图,则默认情况下它会使用不受支持的方法,并且可能可以按照自己的意愿进行操作。

我想澄清一下,我并不是暗示您不应该使用任何可用的方法来保护您的应用程序。我只是想让您知道,如果不使用不受支持的方法,可能无法做到这一点,而且即使您确实使用它们,也可能无法 100% 安全地防范屏幕截图。

There is no supported method to take a screenshot of another app on Android. The only ways involve either rooting or using the SDK, which both offer little to no chance of you either blocking or receiving notification of it. If another app takes your screenshot, it is by default using non-supported methods and can probably do as it pleases.

I'd like to clarify that I am not implying you shouldn't use any methods available to secure your app. I'm just letting you know that it is probably impossible to do so without using non-supported methods, and that even if you do use them you may not be 100% secure against screenshots.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文