DEV Community

Xsilent Dev
Xsilent Dev

Posted on Originally published at tsidevstudio.com AI-assisted

A Bike Photo Changed How I Think About Privacy in Android Apps

Privacy problems in mobile apps are not always dramatic.
Sometimes they are just a photo of a bike.
Imagine taking a few pictures because you want to sell it. You choose the clearest one, prepare a message for the buyer, and are almost ready to send it.
Then you notice something you were not looking for when you took the photo.
There is a person in the background.
A parcel near the door has your address visible on it.
The bike is still the subject of the image, but the photo contains considerably more information than you intended to share.
While working on Xsilent, situations like this changed the way I thought about sharing files from a privacy-focused Android app.
The interesting problem is not simply:
How do I let the user share an image?

It is:
How do I help the user understand what is actually leaving their device?

What is visible is part of the privacy model
When we take a photograph, we naturally focus on the reason we took it.
If I photograph a bike, I am probably checking the frame, wheels, lighting, and whether the picture looks good enough for a listing.
Someone receiving the image is not limited to looking at those things.
They can zoom in.
They might notice a face, a document on a table, a license plate, a reflection, a computer screen, or an address printed on a package.
That led me to think about sharing as its own privacy workflow rather than simply another Android share action.
In Xsilent, this became part of Clean Share.
The idea is to prepare a separate copy before sharing rather than modifying the private original.
Faces can be blurred, but face detection alone is not enough.
A person's address is not a face.
Neither is a name badge, license plate, document, QR code, or text visible on a screen.
So I also wanted the user to be able to manually select areas that should be obscured.
The app cannot know why a particular object matters.
The user does.
That distinction became important to me: privacy tools should assist a decision rather than pretend they can make every privacy decision automatically.
Pixels are only half of the problem
There is another part of an image that is easy to forget because we cannot see it.
Metadata.
Depending on how an image was produced and the device configuration, a photo file can contain additional information about the image.
That creates two separate privacy questions:

  1. What can somebody see in the picture?
  2. What information is stored in the file itself? They require different solutions. Removing metadata does not hide an address printed on a parcel. Blurring the parcel does not automatically mean that unwanted metadata has disappeared from the file. This is why I ended up treating the two operations separately in Clean Share. The prepared copy can have metadata removed, while visible information can be obscured independently. There is also an optional watermark, although I deliberately don't treat a watermark as protection against copying. Once an image is shared, you cannot assume you still control where it goes. Never destroy the original just to make sharing safer Another design decision was to work on a shareable copy. This matters more than it initially seems. If someone starts blurring areas, removing metadata, or adding a watermark, they should not have to sacrifice the original private file. The original has one purpose. The prepared version has another. Keeping those two concepts separate makes the workflow easier to reason about and reduces the chance that a privacy feature accidentally becomes a destructive editing feature. It also fits a principle I keep returning to while building Xsilent: privacy features should increase control without making ordinary actions unnecessarily complicated. Automation still needs a human final check It would be convenient to say that a privacy tool can automatically make an image safe to share. I don't think that is a responsible promise. Face detection can miss unusual angles or reflections. The app cannot know whether a number, object, document, or background detail is personally sensitive to a particular user. So the final step remains intentionally human. Look at the prepared image. Zoom in. Check the areas that matter. Make sure you are sharing the prepared copy rather than the original. And verify the recipient. That may sound obvious, but developing privacy features has repeatedly reminded me that the last few seconds of a workflow can matter just as much as the encryption or storage architecture behind it. The larger lesson The bike photo is a small example, but it represents something I have seen repeatedly while building a privacy-focused Android app. Privacy is rarely one feature. It is a sequence of decisions around ordinary actions: storage, previews, deletion, locking, importing, exporting, and sharing. In this case, the important question was not simply whether Android could share an image. Android already does that very well. The question was what could be done before that image leaves the private environment. That small difference changed the feature completely. I am still refining Xsilent and learning from these kinds of edge cases. For other Android developers working with private or sensitive data: where do you think an app's responsibility ends when the user decides to share something outside it?

Top comments (0)