我的问题是关于Android系统在进入后台时拍摄应用程序屏幕快照。我在应用程序中有一些安全的内容,我想隐藏在这一点上,因此如果用户进入后台并打开最近的应用程序,我可以始终为我的应用程序显示相同的内容(例如初始屏幕),而不是在进入后台之前可见的最后一个屏幕。
这可能吗?
谢谢。
请不要发布有关FLAG_SECURE的答案,我不希望屏幕变黑,并且还发现了一个错误:http://code.google.com/p/android/issues/detail?id=64086
使用 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);
}
}
这将防止截取该活动的屏幕截图。并将在最近的应用程序列表中显示该应用程序的空白屏幕。
编辑:
除此之外FLAG_SECURE
似乎没有任何方法可以防止截屏。但是,我建议使用这种不干净的解决方法。我没有尝试过这个,只是一个想法:
覆盖活动的
onPause()
和onBackPressed()
方法。因此,当按下主页或后退按钮时,将调用这些按钮。然后,在这些视图中,使用
setContentView()
显示另一个虚拟视图或启动画面。以便此启动视图成为最后一个显示的视图。在第 2 点之后,调用
super.onPause()
或super.onBackPressed()
,以便截取此初始屏幕的屏幕截图。不要在第 2 点之前打电话给他们。