Back to News
Advertisement
mmokshablr about 4 hours ago 18 commentsRead Article on github.com

DE version is available. Content is displayed in original English for accuracy.

Hi HN,

I built an Android file viewer that opens PDF, Word, Excel, PowerPoint, images, video, audio, Markdown and code, and asks for no permissions at all.

I have always been uneasy about opening files people send me. On Android you either install a 400 MB office suite and sign in or use a small free viewer that wants storage access and ends up uploading your file to a server to render it. Also the hassle of having to download different apps for different file formats was really annoying.

Gander holds no permissions, not even INTERNET so the OS itself guarantees the file cannot leave the phone.

PDFs use Pdfium, media uses Media3, and Office formats are rendered by bundled JS libraries in a WebView and so no request goes to any server.

It is a viewer only. Complex PowerPoint decks come out approximately right, spreadsheet charts are not drawn, and old binary .doc and .ppt are unsupported. I'll work on it as issues come up :P

It is 14 MB, MIT licensed and uploaded on Github releases.

Do try it! I would love some feedback especially on files that render badly or need new support.

Advertisement

⚡ Community Insights

Discussion Sentiment

91% Positive

Analyzed from 498 words in the discussion.

Trending Topics

#internet#android#app#data#need#file#access#apps#network#content

Discussion (18 Comments)Read Original on HackerNews

TekMol•about 2 hours ago
This is interesting.

I thought granting internet access to apps is not avoidable on Android.

When an app does not request internet, is it really guaranteed that it cannot talk to the outside world? Or is it having other avenues like opening a browser or some other component with a custom url or something?

Update: I just asked Gemini, and it does not look good:

An Android app without the INTERNET permission is not guaranteed to be isolated from the outside world. While it cannot make direct network connections itself, it can use several other mechanisms to transmit data externally:

Intent-Based Communication (The Browser) An app can launch an explicit or implicit Intent to hand data over to another app that does have internet access.

That means the app can open a system browser using a URL containing the data it wants to transmit.

It can also load a Chrome Custom Tab inside its own UI task, passing data through the URL string.

There is also Inter-Process Communication: If two apps from the same developer share a User ID (sharedUserId), they run in the same process and share all permissions, including internet access.

There is also the concept of Content Providers: Content Providers allow apps to share data. An offline app can write data into a shared database or a public Content Provider. A secondary, online-enabled app can then read that database and upload the contents.

nottorp•about 1 hour ago
You're aware that the only really secure computing device has no way to connect to a network and is under armed guard?

Edit: also that LLMs are tuned for "engagement" not for answers like "it's secure enough, move along"?

sheept•about 2 hours ago
I guess that makes sense. Since most non-privacy-focused Android distributions don't let users turn off the internet permission, keeping the permission secure likely ceased to be a priority.

The full list of bypasses is likely much larger because it doesn't fall in the scope of bug bounties.

marak830•about 1 hour ago
Christ that's depressing.

I'm assuming that all works even with application sandboxing (1) or am I mis-reading how that is applied to applications.

Man I need to move my movement to GrapheneOS up to be sooner.

(1) https://source.android.com/docs/security/app-sandbox

dheerajvs•about 2 hours ago
Tried it and I love it. Good work! Have you considered hosting it on F-Droid?
clort•40 minutes ago
That is listed in the Roadmap section right at the end of the README.md file
est•31 minutes ago
This is super cool.

> Requirements: JDK 17+ and the Android SDK (platform 35).

Bummer. I am stuck with Android 14 for the moment.

notpushkin•28 minutes ago
Which is also weird considering most of formats are just opened in a WebView with a respective JS-based viewer. Surely it can be backported?
shscs911•24 minutes ago
Just installed it in my Android 10 phone and it works.
adamddev1•38 minutes ago
This looks great. It seems crazy how we got to this point where this is a revolutionary, unique product.
sgc•about 2 hours ago
Can you add odt, ods, etc support? I use libreoffice viewer but it would be nice to reduce the number of apps on my device.
HelloUsername•about 2 hours ago
Seems nice, will check it out. I liked this one as well: "Little File Explorer – File Manager for Android 1.0 and above" 28.dec.2023 https://news.ycombinator.com/item?id=38789958
tim-projects•about 1 hour ago
Sounds great! You'll just need your social security or passport id sent to google to install and use it... sobs
Mobeen0119•about 4 hours ago
Since everything is offline, what ended up being the hardest format to support while keeping rendering faithful?
vrighter•about 2 hours ago
Why would rendering a document need internet access?
Chilinot•about 2 hours ago
PDFs can do all sorts of shenanigans, such as bundle executable javascript that runs when the file is opened.
echoangle•about 1 hour ago
You don’t need internet to run JS though. And the JS seems to be pretty sandboxed in normal viewers too, so a pdf file shouldn’t make network requests on its own. As long as there is no iframe-like content I don’t see how rendering a document would ever need network.
ziagham•about 1 hour ago
Nice idea