使用安全标志自定义 android 应用在后台时的预览

Customize android app preview when it is in background with secure flag

在我的 Android 应用程序中,我需要使用 SECURE_FLAG 对 Android 说:"hey you don't take a screenshoot of my app in background!"。好的,只需在我的活动中使用以下代码行即可:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

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

我得到的结果在下面的截图中有解释:

现在..我怎么能:

  1. 更改 activity 预览顶部的图标?
  2. 将 activity 的预览更改为另一种颜色或图像?

我正在寻找解决方案,但我没有找到任何解决方案.. 除了不可能做到(如果是真的我认为很遗憾,因为Android)。提前Tnx.

您可以使用两种布局。

  1. 在布局的 xml 代码中,制作一个单独的布局并剪切并粘贴整个 ui 代码并为其指定 ID mainLayout .制作另一个用于固定 UI 的布局。为该布局指定 id protectLayout,然后您可以自定义您想要的内容,例如图像背景等...

  2. 然后在 activity 中按照此操作以确保安全。

    LinearLayout mainLayout,secureLayout;
    
    @Override
    protected void onPause() {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        mainLayout.setVisibility(View.GONE);
        secureLayout.setVisibility(View.VISIBLE);
        super.onPause();
    }
    
    @Override
    protected void onStart() {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,WindowManager.LayoutParams.FLAG_SECURE);
        mainLayout.setVisibility(View.VISIBLE);
        secureLayout.setVisibility(View.GONE);
        super.onResume();
    }