如何影响Android在进入后台时从应用程序获取的快照

如何影响Android在进入后台时从应用程序获取的快照,android,Android,我的问题是安卓系统在进入后台时拍摄应用程序屏幕的快照。我在应用程序中有一些安全的内容,我想在这一点上隐藏这些内容,因此,如果用户进入后台并打开最近的应用程序,我可以始终为我的应用程序显示相同的内容(例如启动屏幕),而不是进入后台之前可见的最后一个屏幕 这可能吗 谢谢 请不要发布关于FLAG_SECURE的答案,我不希望屏幕是黑色的,也不希望从中发现错误:使用 用法: public class FlagSecureTestActivity extends Activity { @O

我的问题是安卓系统在进入后台时拍摄应用程序屏幕的快照。我在应用程序中有一些安全的内容,我想在这一点上隐藏这些内容,因此,如果用户进入后台并打开最近的应用程序,我可以始终为我的应用程序显示相同的内容(例如启动屏幕),而不是进入后台之前可见的最后一个屏幕

这可能吗

谢谢

请不要发布关于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);
      }
  }
这将防止截图被拍摄到该活动。并将在最近的应用程序列表中显示该应用程序的空白屏幕

编辑:

  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);
      }
  }
除了
FLAG\u SECURE
之外,似乎没有任何方法可以阻止截屏。然而,我建议改为使用这种不干净的解决方法。我没有尝试过这个,只是一个想法:

  • 重写活动的
    onPause()
    onBackPressed()
    方法。因此,当按下home(主页)或back(返回)按钮时,这些被称为

  • 然后,在这些视图中,使用
    setContentView()
    来显示另一个虚拟视图或启动屏幕。因此,此初始视图将成为最后显示的视图

  • 在第2点之后,调用
    super.onPause()
    super.onBackPressed()
    ,以便拍摄此初始屏幕的屏幕截图。在第二点之前不要给他们打电话


  • 我建议了另一种解决方法,也许你可以试试。你找到解决方法了吗?@TashPemhiwa-nope,在这篇文章之后没有尝试过。从几年前开始可能会这样做:)我已经尝试过使用
    布尔活动。onCreateThumbnail()
    但它从未在API 22和24上被调用查看此帖子,似乎仍然没有很好的解决方案:@Niko看起来没有其他方法..我甚至尝试过从堆栈顶部清除应用程序,但这也不行。这是一个如此愚蠢的实现,至少没有公共API,但可能是对平台私有成员/方法的一些攻击。谢谢你的努力。@Niko你能通过暂停/恢复来实现上述目标吗?。。我知道我迟到了……现在是2016年:)