使用安全标志在后台自定义 Android 应用程序预览

问题描述 投票:0回答:1

在我的 Android 应用程序中,我需要使用

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

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); 
  ...
}

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

screenshot

现在,我怎样才能:

  1. 更改活动预览顶部的图标?
  2. 使用其他颜色或图像更改活动的预览?

我寻找解决方案,但我没有找到任何东西..除了不可能做到这一点(如果是真的,我认为对于Android来说很遗憾)。

java android security screenshot
1个回答
8
投票

您可以使用两种布局。

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

注意:这最适合 Android 版本 11 及更高版本,因为在其他版本中,最近的显示不会立即更新。

(在 Samsung M30s API 32 和 Google Pixel API 33 模拟器上测试)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.