首页 > 解决方案 > 使用安全标志在后台自定义 android 应用预览

问题描述

在我的 Android 应用程序中,我需要使用 SECURE_FLAG 对 Android 说:“嘿,你不要在后台截取我的应用程序的屏幕截图!”。好的,它只需在我的活动中使用以下代码行即可:

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

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

我获得的内容在以下屏幕截图中进行了解释:

截屏

现在..我怎么能:

  1. 更改活动预览顶部的图标?
  2. 用另一种颜色或图像更改活动的预览?

我正在寻找解决方案,但我什么也没找到。除了不可能做到这一点(如果是真的,我认为对于 Android 来说是一个遗憾)。提前Tnx。

标签: javaandroidsecurityscreenshot

解决方案


您可以使用两种布局。

  1. 在布局的 xml 代码中,制作一个单独的布局并将整个 ui 代码剪切并粘贴到其中并为其指定 id mainLayout。制作另一个用于保护 UI 的布局。给这个布局一个id protectLayout,在那里你可以自定义你想要的东西,比如图像背景等等......

  2. 然后在您想要确保安全的活动中遵循这一点。

    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();
    }
    

推荐阅读