【问题标题】:Hide screen in 'Recent Apps List', but allow screenshots在“最近的应用程序列表”中隐藏屏幕,但允许截图
【发布时间】:2015-04-15 06:04:46
【问题描述】:

由于显示敏感数据,我主要想在最近的应用程序列表中将屏幕设为空白。为此,解决方案是使用:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);

但这也不允许截图,这是个问题。

有没有办法在最近的应用列表中显示空白屏幕(或预定义的图像),同时仍然允许截图?

【问题讨论】:

  • 我不确定这是否可行,而且我目前没有可用的测试环境,但您可以尝试在onPause 中隐藏敏感字段并恢复它们onResume跨度>
  • @RobbeRoels,听起来不错 - 我会试一试
  • @rajath 您是否找到了不仅适用于 Android 8+,也适用于 Android 6 和 7 的解决方案?

标签: android screenshot android-recents


【解决方案1】:

我已经尝试过这种方法并且它有效。为了使最近列表中的屏幕空白并仍然允许屏幕,您可以在onPause() 中设置标志并在onResume() 中清除标志。

@Override
protected void onPause() {
  super.onPause();
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,WindowManager.LayoutParams.FLAG_SECURE);
}

@Override
protected void onResume() {
    super.onResume();
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);     
}

【讨论】:

  • 此解决方案似乎不适用于三星设备。有什么解决方法吗?
  • 在 Android 8,9,10 上运行良好,但对于以前的版本无法正常运行。
  • 这似乎不适用于 Android OS 版本 10 上的 Pixel 3 和 4。但在运行 Android 10 的三星上运行良好(:.
  • 我在搭载 Android 10 的华为和三星设备上进行了测试。不幸的是,在这两种设备上,此解决方案都不起作用。最近应用列表中的缩略图就像没有标志一样。
【解决方案2】:

我认为你需要的是:

android:excludeFromRecents="true"

把它放在你的<activity>(activity you want to exclude from recents)</activity><activity>(activity you want to exclude from recents)</activity>的android清单中

【讨论】:

  • 这会将应用从最近列表中完全删除,这不是我想要的
  • hmm...好吧,您可以用一张黑色的大图片覆盖您的活动,并在您的onPause() 中将其设为可见,然后消失 在你的onResume()
  • @Strider 不起作用,因为缩略图是在调用onPause() 方法之前创建的
【解决方案3】:

如果您的 Activity 显示敏感数据,出于安全原因,最好不要让用户制作屏幕截图。如果您甚至担心最近的应用程序屏幕,为什么您不担心同时截图?我认为,Android OS SecureFlag 旨在保护您的数据和截图功能,只是否定了它的目的。
如果您仍然想要此功能,您可以尝试使用此标志将所有敏感数据移动到单独的活动中。在这种情况下,您将保护您的敏感数据,并且在其他应用程序的活动中将有能力制作屏幕截图。

【讨论】:

  • 我完全同意你的推理。不幸的是,这是应用程序的要求,我需要看看它是否可能。
【解决方案4】:

在做了一些研究后,我发现目前这是不可能的。

onCreateThumbnail 似乎是您正在寻找的功能。不幸的是,这个功能似乎没有实现或至少不起作用。

正如 Ped7g 指出的那样:自 2014 年以来,onCreateThumbnail 将“无法修复”。

Android onCreateThumbnail reference page

这个功能很可能永远不会起作用。

【讨论】:

  • onCreateThumbnail 自 2014 年以来“不会修复”...我不会指望这个在不久的将来会工作。
  • 我也说过“不幸的是,这个功能似乎没有实现或至少不起作用。”
  • “不工作”IMO 不如“谷歌故意决定保持在非工作状态”那么强大......可悲的是。听起来不错的功能,只有一些轻微的滥用潜力,但我不理解 Android OS API 设计决策,因为从 1.2 开始,所以难怪他们会朝着我不喜欢的方向发展(顺便说一句,谢谢你的信息,这对我很有帮助,我只是想强调这件事的真实状态,它“死”了,很可能永远存在)。
  • 很公平,谢谢你的评论,我会在答案中编辑这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多