[Solved] App that prevents screenshot of it's content

Hi Guys!
I was wondering if it’s actually possible to create an app for opening a pdf file for instance, and it will be impossible to take a screenshot of it’s content?

1 Like

I do not think you can do that.
The screenshot is a feature that is controlled by the operating system. The OS is the boss of your device, including being the boss of all of your apps.

Apps cannot take over and prevent the OS from working.

1 Like

Hi,

This is not possible because the user would get a second phone, take a picture of the screen of your app. Uncomfortable? Yes, but if your screen’s contents costs one million dollars, then for the money and one month of life can be spent on it photographing ^-^.

2 Likes

But is there a way, if possibly the shot was eventually taken and the content appears blank. What am trying to say is; it’s going to be totally invisible for capture. So what might appear is a blank dark image.

If it is a blank dark image for the screen capture, it is a dark blank image for the phone user. In other words, it is a completely unusable image.
If this is what you want, you could just as well turn the phone off.

Hmmmmmmm, this was difficult than i imagined it. I was actually working on something and am scared of piracy, any advice?

Piracy of what?

You think you invented sliced bread or something?

My advise: stop being paranoid.

1 Like

hmmmmmm, just found a solution in another app builder… it actually exists!:grinning:

“You can not hide the fact that at least once showed the world” - Aleksandr Strashko

If you’re interested, then by another builder application creates information and then give us a link to it, so we checked out, can piracy or not :slight_smile:

1 Like

You want to say that Kodular not allow me to take a snapshot of your screen and insert this picture in my application?

This is possible when making an app for Android and iOS, but not possible on the Thunkable X platform. My banking app will not let me take screenshots for “security reasons” and I get a little grey banner at the bottom of my screen which is controlled by the OS. So yes it is possible but not with Thunkable X.

1 Like

Banking application - this is a slightly different topic. The author is afraid of piracy

I am scared of piracy

Piracy - is when a third party may use the author’s material, gives his own and trying this and still make money. Of course, the screen picture will not have the same quality as the original material, but there are other ways spiratit information.

@CBVG gave sound advice - stop being paranoid. Novice developers believe that their every application - this is the best app in the universe and it is senseless to spend a lot of time and effort on something to somehow protect his authorship.

2 Likes

What does the link to one of Kodular’s moderator profile supposed to demonstrate?

That said, while I cannot see how to prevent a user form taking a snapshot of their own device’s screen, there may be a way of making such a snapshot almost unusable.
The idea is to cycle through multiple images, each of which show only part of the information.
For instance, suppose that I want to show the following text:

Hi There

Basically, I can have 3 images. The first one shows:

H___he__

the second one
__T__r

and the 3rd
_i____e

Now , you have the app flash image #1, then #2 and #3 and then again #1, 2 3 and so on, continuously.

That is the concept.
Of course, in a real application, the images would not show complete letters, but randomly distributed blocks – if going for 3 images in cycle, 2/3 of the pixels would be completely black on each image.
What would happen then is that an attempt at capturing the screen would only get 1/3 of the image; one would have to capture all three screens and bring them to an image editor

The downsides are

  • that the image would be 1/3 as bright, since any pixel of the actual image would be shown only 1/3 of the time.
  • generating three 1/3 images is not going to be a trivial programming task (euphemism to mean: you have to be an expert) – the canvas in Classic could possibly do this, but the required functions do not exist in X. Also, the code would be extensive, perhaps beyond what Thunkable can support in terms of blocks; and processing would most likely have to be performed by an external widget, written in an different programming language
  • the pixel on/pixel off selection process would be delicate to do, since if the pixels are small and the image large, you would end up with 3 still quite legible images in each sub-frame; they would simply be lower resolution rendition, as opposed to garbled ones
  • that stroboscopic screen effect could be very bad for people with epilepsy
  • the stroboscopic cycle rate would depend on the speed of the end device, which you do not control. Also, it has been my personal experience that some device are smart enough to determine that showing an image is pointless if it would be replaced by another one before the screen had the time to refresh. This makes the timing essentially impossible to tune for all devices; what may work for one smartphone could be impossible for another.
  • the overall partial image flashing experience could still be captured by a animated screen capture utility (as opposed to a static, single image capture) and be played back at leisure
1 Like

oops that was a mistake, check the edited post.

I note that this is kodular, and apparently requires one to add a screenshot component that does not exist in thunkable. Adding a component just to disable its function could appear clever, but that is not foolproof.
The way it works is that the operating system is generous enough to check if there is a locally defined function first before activating the screen capture. Seeing that there is a screen capture in your app, it calls it instead, and the button sequence to screen capture is trapped by you app instead. And in there, you would have the logic that states “do nothing”.
And here is how it can easily be circumvented (I do not have an iPhone, but will assume that a similar function to the one in Android exists). When there are several application loaded, you have the option of showing them in some kind of scrollable tiled format, with each application showing as a slightly scaled down partial (about 2/3 of the upper part) window. Each of those tile shows their respective app last status (that it, what was last shown when the app in focus stopped being them).
There is nothing stopping anyone from screen capturing that tile, since at that time, the app is not the one in control of the screen capture anymore.
Therefore, only the most naive of users would be defeated by the “screen capture disable” approach of kodular.

Sorry to rain on your parade.

But that’s not going to be clear… Am in; you would have to strain your eyes to actually see anything.

plus if you minimize, you would get a blank page(just tested it). Which means you would have to reopen again…

On a smart phone with a 2000 by 1200 + resolution?
Only if your text is super tiny to the point of being blurry already when the app is running.
Otherwise, a simple pinch to expand would show exquisite details.

What is it you are trying to protect with that much obsession anyway? The nuclear launch codes? Spying order instructions from North Korea? Black mail pictures of your neighbor having dinner with someone who is not his spouse?

1 Like

:grinning::grinning::grinning: