我当前正在构建的应用程序要求该应用程序必须阻止操作系统在出于安全原因将应用程序推入后台时对其进行屏幕截图。这样,在应用程序之间切换时就无法看到最后一个活动屏幕。
我计划将此功能放入应用程序类的 onPause 方法中,但首先我需要找出如何实现此功能。
那么有没有人知道如何解决这个问题?
Try FLAG_SECURE https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SECURE:
public class FlagSecureTestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
setContentView(R.layout.main);
}
}
这绝对可以防止 ICS 最近任务历史记录中的手动屏幕截图和自动屏幕截图。它还可以防止屏幕录制(例如,使用媒体投影 API 的应用程序)。
UPDATE:它还可以抵御 Android 6.0 上的 Now On Tap 或其他助手;如果用户打开助手,他们将无法访问 UI 中小部件和容器的详细信息。
更新#2:但是,并非活动中的所有内容都会受到保护。任何弹出窗口 —Dialog
, Spinner
, AutoCompleteTextView
、操作栏溢出等——将是不安全的。您可以修复Dialog
问题通过调用getWindow()
并设置FLAG_SECURE
。剩下的......变得棘手。看这篇博文 https://commonsware.com/blog/2016/06/06/psa-flag-secure-window-leaks.html了解更多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)