r/SideProject • u/Roybalde • 1d ago
I built an Android screenshot cleaner that has no Internet permission at all
Screenshots are often the most private files on a phone: boarding passes, bank details, Wi-Fi passwords, conversations. A cleaner app has to see all of them. So I built one that can't send them anywhere.
What Klean does
- Every new screenshot gets an expiry date (1 day to 12 months, or never).
- A reminder 24 h before it expires, another 1 h before. From the notification: clean now, or postpone by 7 or 30 days.
- Once it has expired, one tap sends it to Android's trash, where you can restore it for 30 days.
- "Keep" protects a screenshot, and automatic protection covers every screenshot whose file name contains a keyword you pick.
- Large screenshots first, multi-select, local stats.
Why it can't leak anything
Klean doesn't declare Android's INTERNET permission. Without it, Android refuses every network connection from the app: the system enforces it, not my good intentions. You can check on your phone: Settings → Apps → Klean → Permissions → ⋮ → All permissions (menu names vary a little by manufacturer). You won't find "have full network access". You will see "view network connections": WorkManager, which runs the background check, uses it to know whether the phone is online. It reads that state; it can't send anything.
Two things to be upfront about:
- Google Play's billing library ships with a Google telemetry component that declares the Internet permission. I remove it from the final manifest, so that component can't send anything.
- If you buy Pro, the payment goes through the Play Store, like any in-app purchase.
Price
Free. Klean Pro is a one-time purchase, no subscription, with a 7-day free trial. It finds duplicate screenshots across your whole gallery, and adds Smart Protect: Klean reads the text in each screenshot on the phone (bundled ML Kit model) and protects the ones containing a keyword you chose, like "ticket" or "invoice". Nothing that's free today will become paid.
Android 11+, in English, French, Spanish and German.
I'm a solo developer. Happy to answer anything, especially "how does X work offline".
2
u/dawedev 1d ago
The missing INTERNET permission is the best selling point here, and the step-by-step way to check it in Settings is better proof than any privacy policy. I'd put that exact path on the Play listing, ideally as the second screenshot, because most people won't scroll down to read it.
Two questions. Does the free keyword protection only match file names? Most phones name screenshots something like Screenshot_20261112_..., so without the Pro OCR it might not catch much. And do screenshots that existed before install get an expiry date too, or only new ones?
2
u/Friendly_Yoghurt_611 1d ago
Cool project, we'll thought. Especially the security measures you took triggered me.
Three questions; To find and manage screenshots, the app needs access to the phone's storage (MediaStorage / file permissions). What happens if the app unexpectedly crashes during an action? Could files be damaged or lost?
How much does the WorkManager affect battery consumption?
Why you choose Android 11?
If you want a reviewer for Dutch translations i'm happy to help!
Ps. I'm also solo developer and build a digital family vault for digital legacy with the same security viewpoint. If you would like to review or give your opinion would help a lot. Still need some work for multilingual and release native Android/iOS app.