HNHacker News
TopNewBestAskShowJobs

mokshablr

79 karma · joined January 29, 2025

submissionscomments
mokshablr··on Show HN: Gander, an Android file viewer that asks for no permissions
Thanks for trying it out!
mokshablr··on Show HN: Gander, an Android file viewer that asks for no permissions
Fair enough, fixed that in the README.
mokshablr··on Show HN: Gander, an Android file viewer that asks for no permissions
Added, it's in the README under Install now. Thanks for bringing that up!
mokshablr··on Show HN: Gander, an Android file viewer that asks for no permissions
ods actually already works.. it goes through the same SheetJS path as xlsx and csv. But your question made me check properly and there's a bug... I never registered the OpenDocument mime type so Gander wont show up in the "open with" list when you tap a .ods. Opening it from inside the app works fine.

Fixed in the manifest just now, it'll be in the next build.

odt and odp dont work at all. odt is a fair ask.. its the same shape of problem as docx so it's doable. Less sure about odp though.. the pptx renderer is already the weakest part of this.

And yeah, fewer apps on the phone was pretty much the whole reason I started building this.

mokshablr··on Show HN: Gander, an Android file viewer that asks for no permissions
Sorry, that's on my README. That line is under "Build from source" so it's what you need to compile it, not to run it. minSdk is 26, so Android 8 and up.

Android 14 is well past the floor, you're good to go!

mokshablr··on Show HN: Gander, an Android file viewer that asks for no permissions
pptx by a mile. A slide is absolutely positioned shapes with a whole layout inheritance thing going on so the JS renderer ends up reimplementing a whole layout engine, and it gets you to "approximately right" and stops there. Charts I gave up on.

docx was annoying in a different way. Bullets came out as junk characters for a while and I couldnt work out why. I then found that Word writes them as private use area codepoints in the Symbol font so unless you have that exact font you get some junk. I just map them back to unicode after the render.

xlsx was the easy one, SheetJS does the hard part.

On faithful though none of this is faithful the way LibreOffice is. Its more that "you can read the document and it looks roughly right" which is what I wanted out of an app of 14MB.

mokshablr··on Show HN: Gander, an Android file viewer that asks for no permissions at all
Yeah fair I was too flat in the post... No INTERNET means my process can't reach the network. It doesn't stop an app passing data to something that can, so your list is right.

It's not a guarantee then, it's just a lot less to check. There's no silent route out so all that's left is what the app chooses to send via intents and Gander sends two, both when you tap something ("Share" and "Show in file manager")

Nothing anywhere builds a URL out of the file contents. No browser launch, no Custom Tabs and no shared user ID. The only content provider is closed to other apps. The one time a file goes anywhere is when you hit Share and pick the app, and what it gets is read access to that one file.

In case you grep it there's an https:// in ViewerActivity.kt. That's the local virtual host WebViewAssetLoader serves the bundled renderers from, it never leaves the process.