I am developing an app that has private information and should not display a real screenshot in Android's recent app switcher. I've tried a variation of this solution, by setting the content view to an ImageView inside the onPause function, but it seems that the operating system takes a screenshot before the content view is changed to the custom image.
I am also aware of setting the window's layout parameter flags to secure, making the screenshot completely white, but I'd hope that there would be a way to customize the screenshot.
So, I'm wondering at what point that Android takes a screenshot of the app for the app switcher (specifically in KitKat and Lollipop).
The Recents screen (also referred to as the Overview screen, recent task list, or recent apps) is a system-level UI that lists recently accessed activities and tasks. The user can navigate through the list and select a task to resume, or the user can remove a task from the list by swiping it away.
You'll be able to see your recent apps with a single tap. From the Home screen, tap the Recents icon to the left of the Home button. All of your active or opened apps will be listed. If you've customized your Navigation bar, Recents may be located on the right, unless you're using full screen gestures.
On many Android devices, you can capture a screenshot with a key-combination: Simultaneously press-and-hold Power and Volume-down. You can also capture a screenshot with Android Studio as follows: Run your app on a connected device or emulator.
The Recents key — the square you see in the bottom-right corner of most Android phones — is a staple of the OS, letting you see a card-deck of recently-used apps.
EDIT
It is no longer possible to customize the screenshot which system uses to present the thumbnail in the recent apps.
Old answer
Take a look at method Activity.onCreateThumbnail
- this is exactly what you're looking for as it let you draw your own thumbnail for Recent screen.
You get Canvas
as one of the parameters in which you can draw (or not draw at all) directly. The main point is that you have to return true
from this method, which indicates that system won't draw thumbnail itself.
The simpliest solution would be:
@Override public boolean onCreateThumbnail (Bitmap outBitmap, Canvas canvas) { // Do nothing or draw on Canvas return true; }
or if you want to draw your own 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; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With