I have situation where I need to prevent screenshots when app moves to background or in recent list and also when app goes to foreground I need to allow user to take screenshots.
Solutions I have tried in MainActivity.java.
By using FLAG_SECURE in onPause and onResume like below
public void onPause() { this.getWindow().setFlags(LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); super.onPause(); } public void onResume() { super.onResume(); this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); }
Adding separate layout to show/hide in OnPause and OnResume
But none of them work. Kindly anyone help me on this one either Cordova or Android code.
Updated:
After spending so many hours, tried with different solutions and referred to multiple Cordova plugins finally able to resolve this issue using below code.
Instead of setting FLAG_SECURE in onResume and onPause. It can be used like below code.
`@Override
public void onWindowFocusChanged(boolean hasFocus) {
isWindowFocused = hasFocus;
if(hasFocus) {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
} else {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
}
if (isBackPressed && !hasFocus) {
isBackPressed = false;
isWindowFocused = true;
}
super.onWindowFocusChanged(hasFocus);
}`
I hope it helps for someone.