Android 什么时候截取其最近的应用程序切换器屏幕截图?

When does Android take its recent apps switcher screenshot?

我正在开发一个包含私人信息的应用程序,不应在 Android 最近的应用程序切换器中显示真实屏幕截图。我尝试了 this solution 的变体,方法是将内容视图设置为 onPause 函数内的 ImageView,但操作系统似乎在内容视图更改为自定义图像之前截取了屏幕截图。

我也知道setting the window's layout parameter flags to secure,让屏幕截图全白,但我希望有一种方法可以自定义屏幕截图。

所以,我想知道 Android 在什么时候为应用程序切换器(特别是在 KitKat 和 Lollipop 中)截取了应用程序的屏幕截图。

编辑

在最近的应用程序中不再可以自定义系统用于显示缩略图的屏幕截图。

旧答案

看看方法 Activity.onCreateThumbnail - 这正是您正在寻找的方法,因为它可以让您为最近的屏幕绘制自己的缩略图。

您得到 Canvas 作为您可以直接绘制(或根本不绘制)的参数之一。重点是你必须从这个方法return true,这表明系统不会自己绘制缩略图。

最简单的解决方案是:

@Override
public boolean onCreateThumbnail (Bitmap outBitmap, Canvas canvas) {
    // Do nothing or draw on Canvas
    return true;
}

或者如果你想自己画 Bitmap

@Override
public boolean onCreateThumbnail (Bitmap outBitmap, Canvas canvas) {
    Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.myBitmap);
    canvas.drawBitmap(myBitmap, 0, 0, null);

    return true;
}