如何强制应用为最近的应用列表创建缩略图(快照)?

tol*_*dru 7 java android thumbnails android-recents

我的应用程序的测试人员报告说:"最近的应用程序列表中的应用程序的缩略图根本没有调整.在我看来它像主屏幕壁纸(tolikdru:可能,只是透明的rect),或者像应用程序的绿色背景屏幕,但从来不是应用程序的真实快照." 所以行为就像这里描述的那样.

我的设备是使用Android 2.0,所以我无法检查和调试问题(最近的应用程序中的缩略图是自Android 3.0+以来).因此,进一步的研究处于"盲目模式".

我决定用onCreateThumbnail手动强制应用程序缩略图的创建()作为这里建议.(为了简化开始的任务,我没有捕获真正的快照,而是使用splashscreen drawable.)

@Override
public boolean onCreateThumbnail(Bitmap outBitmap, Canvas thumbCanvas) {
    super.onCreateThumbnail(outBitmap, thumbCanvas);

    //splashscreen drawable to bitmap
    outBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.titel);

    //automatically scale to provided canvas 
    //(is the canvas provided as input ???)
    thumbCanvas.drawBitmap(outBitmap, 0, 0, new Paint());

    //is the outBitmap itself scaled to canvas or its copy???
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我不确定上面的代码是否正确,因为我无法测试它(见下文).

根据文档,另一个可能的解决方案可能只是一个虚拟的@Override onCreateThumbnail,里面只有super.onCreateThumbnail(),因为文档说:

默认实现返回失败,并且不绘制缩略图; 这将导致平台 在需要时创建自己的缩略图.

但是onCreateThumbnail方法并没有触发,至少在我的Android 2上.实际上这个技巧是针对Android 3+设计的.这里(2012年) 和此处(2009年)报道了相同的情况.在这两种情况下都没有使用Android版本.

那么请你帮忙解答一下问题:

1)上面的代码是否适用于在最近的应用列表中使用缩略图的Android 3+设备?

2)如果没有,是否有任何其他解决方法使应用程序生成正确的缩略图(或任意绘制到我的选择)?

提前致谢!

Kyl*_*nke 2

这是操作系统的问题。不幸的是,它似乎不起作用。如果您不希望人们出于某种原因从最近的应用程序中查看您的应用程序,您可以将

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE)
Run Code Online (Sandbox Code Playgroud)

作为活动的 onCreate() 方法中的第一行。